3.1.1-alt2
- rebuild with system library
This commit is contained in:
parent
6115e73cea
commit
aa4a8ab215
@ -1,4 +1 @@
|
||||
copy: *.patch
|
||||
tar.bz2: spice name=spice-0.14.1
|
||||
tar.xz: spice-protocol name=spice-protocol
|
||||
tar.xz: spiceterm name=spiceterm
|
||||
|
@ -1,56 +0,0 @@
|
||||
Index: new/server/spice-server.syms
|
||||
===================================================================
|
||||
--- new.orig/server/spice-server.syms
|
||||
+++ new/server/spice-server.syms
|
||||
@@ -148,6 +148,7 @@ global:
|
||||
|
||||
SPICE_SERVER_0.12.5 {
|
||||
global:
|
||||
+ spice_server_set_sasl_callbacks;
|
||||
spice_server_get_best_playback_rate;
|
||||
spice_server_set_playback_rate;
|
||||
spice_server_get_best_record_rate;
|
||||
Index: new/server/spice-server.h
|
||||
===================================================================
|
||||
--- new.orig/server/spice-server.h
|
||||
+++ new/server/spice-server.h
|
||||
@@ -53,6 +53,7 @@ int spice_server_set_exit_on_disconnect(
|
||||
int spice_server_set_noauth(SpiceServer *s);
|
||||
int spice_server_set_sasl(SpiceServer *s, int enabled);
|
||||
int spice_server_set_sasl_appname(SpiceServer *s, const char *appname);
|
||||
+int spice_server_set_sasl_callbacks(SpiceServer *s, void *saslcb);
|
||||
int spice_server_set_ticket(SpiceServer *s, const char *passwd, int lifetime,
|
||||
int fail_if_connected, int disconnect_if_connected);
|
||||
int spice_server_set_tls(SpiceServer *s, int port,
|
||||
Index: new/server/red-stream.c
|
||||
===================================================================
|
||||
--- new.orig/server/red-stream.c
|
||||
+++ new/server/red-stream.c
|
||||
@@ -48,6 +48,18 @@ extern SpiceCoreInterface *core;
|
||||
#if HAVE_SASL
|
||||
#include <sasl/sasl.h>
|
||||
|
||||
+static sasl_callback_t *sasl_callbacks = NULL;
|
||||
+
|
||||
+SPICE_GNUC_VISIBLE int spice_server_set_sasl_callbacks(SpiceServer *s, void *saslcb)
|
||||
+{
|
||||
+#if HAVE_SASL
|
||||
+ sasl_callbacks = (sasl_callback_t *)saslcb;
|
||||
+ return 0;
|
||||
+#else
|
||||
+ return -1;
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
typedef struct RedSASL {
|
||||
sasl_conn_t *conn;
|
||||
|
||||
@@ -976,7 +988,7 @@ bool red_sasl_start_auth(RedsStream *st
|
||||
NULL, /* User realm */
|
||||
localAddr,
|
||||
remoteAddr,
|
||||
- NULL, /* Callbacks, not needed */
|
||||
+ sasl_callbacks,
|
||||
SASL_SUCCESS_DATA,
|
||||
&sasl->conn);
|
||||
free(localAddr);
|
@ -1,53 +0,0 @@
|
||||
--- spice/configure.ac.spice-proto 2018-08-22 11:31:30.000000000 +0000
|
||||
+++ spice/configure.ac 2019-08-05 09:32:49.621487826 +0000
|
||||
@@ -139,7 +139,7 @@ AM_CONDITIONAL(HAVE_SASL, test "x$have_s
|
||||
dnl =========================================================================
|
||||
dnl Check deps
|
||||
AC_CONFIG_SUBDIRS([subprojects/spice-common])
|
||||
-COMMON_CFLAGS='-I ${top_srcdir}/subprojects/spice-common/ -I ${top_builddir}/subprojects/spice-common/'
|
||||
+COMMON_CFLAGS='-I ${top_srcdir}/subprojects/spice-common/ -I ${top_builddir}/subprojects/spice-common/ -I ${top_builddir}/../spice-protocol'
|
||||
COMMON_CFLAGS="$COMMON_CFLAGS -DG_LOG_DOMAIN=\\\"Spice\\\""
|
||||
AC_SUBST(COMMON_CFLAGS)
|
||||
|
||||
@@ -160,10 +160,6 @@ AS_IF([test x"$have_smartcard" = "xyes"]
|
||||
AS_VAR_APPEND([SPICE_REQUIRES], [" libcacard >= 0.1.2"])
|
||||
])
|
||||
|
||||
-SPICE_PROTOCOL_MIN_VER=0.12.14
|
||||
-PKG_CHECK_MODULES([SPICE_PROTOCOL], [spice-protocol >= $SPICE_PROTOCOL_MIN_VER])
|
||||
-AC_SUBST([SPICE_PROTOCOL_MIN_VER])
|
||||
-
|
||||
GLIB2_REQUIRED=2.32
|
||||
GLIB2_ENCODED_VERSION="GLIB_VERSION_2_32"
|
||||
PKG_CHECK_MODULES([GLIB2], [glib-2.0 >= $GLIB2_REQUIRED gio-2.0 >= $GLIB2_REQUIRED])
|
||||
--- spice/subprojects/spice-common/Makefile.am.spice-proto 2018-08-08 10:13:13.000000000 +0000
|
||||
+++ spice/subprojects/spice-common/Makefile.am 2019-08-05 09:28:53.078456697 +0000
|
||||
@@ -1,7 +1,7 @@
|
||||
NULL =
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
|
||||
-SUBDIRS = python_modules common tests docs
|
||||
+SUBDIRS = python_modules common
|
||||
|
||||
EXTRA_DIST = \
|
||||
meson.build \
|
||||
--- spice/subprojects/spice-common/configure.ac.spice-proto 2018-08-08 10:13:13.000000000 +0000
|
||||
+++ spice/subprojects/spice-common/configure.ac 2019-08-05 09:25:44.239431862 +0000
|
||||
@@ -38,7 +38,7 @@ AS_IF([test "x$enable_alignment_checks"
|
||||
[AC_DEFINE([SPICE_DEBUG_ALIGNMENT], 1, [Enable runtime checks for cast alignment])])
|
||||
|
||||
# Checks for libraries
|
||||
-PKG_CHECK_MODULES([PROTOCOL], [spice-protocol >= 0.12.12])
|
||||
+#PKG_CHECK_MODULES([PROTOCOL], [spice-protocol >= 0.12.12])
|
||||
|
||||
SPICE_CHECK_PYTHON_MODULES()
|
||||
|
||||
@@ -50,7 +50,7 @@ SPICE_CHECK_OPUS
|
||||
SPICE_CHECK_OPENSSL
|
||||
SPICE_CHECK_GDK_PIXBUF
|
||||
|
||||
-SPICE_COMMON_CFLAGS='$(PIXMAN_CFLAGS) $(SMARTCARD_CFLAGS) $(CELT051_CFLAGS) $(GLIB2_CFLAGS) $(OPUS_CFLAGS) $(OPENSSL_CFLAGS)'
|
||||
+SPICE_COMMON_CFLAGS='$(PIXMAN_CFLAGS) $(SMARTCARD_CFLAGS) $(CELT051_CFLAGS) $(GLIB2_CFLAGS) $(OPUS_CFLAGS) $(OPENSSL_CFLAGS) -I$(top_srcdir)/../../../spice-protocol'
|
||||
SPICE_COMMON_CFLAGS="$SPICE_COMMON_CFLAGS -DG_LOG_DOMAIN=\\\"Spice\\\""
|
||||
SPICE_COMMON_LIBS='$(PIXMAN_LIBS) $(CELT051_LIBS) $(GLIB2_LIBS) $(OPUS_LIBS) $(OPENSSL_LIBS)'
|
||||
AC_SUBST(SPICE_COMMON_CFLAGS)
|
@ -4,7 +4,7 @@
|
||||
Name: pve-%sname
|
||||
Summary: SPICE Terminal Emulator
|
||||
Version: 3.1.1
|
||||
Release: alt1
|
||||
Release: alt2
|
||||
License: GPLv2
|
||||
Group: Networking/WWW
|
||||
Url: https://git.proxmox.com/
|
||||
@ -13,45 +13,17 @@ Packager: Valery Inozemtsev <shrek@altlinux.ru>
|
||||
ExclusiveArch: x86_64 aarch64
|
||||
|
||||
Source0: %sname.tar.xz
|
||||
Source1: spice-0.14.1.tar.bz2
|
||||
Source2: spice-protocol.tar.xz
|
||||
Patch0: allow-to-set-sasl-callbacks.patch
|
||||
|
||||
Patch10: spiceterm-alt.patch
|
||||
Patch11: pve-spice-protocol.patch
|
||||
|
||||
BuildRequires: libgio-devel libjpeg-devel liblz4-devel libogg-devel libopus-devel libpixman-devel
|
||||
BuildRequires: libsasl2-devel libssl-devel perl-Pod-Usage zlib-devel libgdk-pixbuf-devel
|
||||
BuildRequires: python-modules python-module-pyparsing python-module-six
|
||||
BuildRequires: glib2-devel libspice-server-devel perl-podlators
|
||||
|
||||
%description
|
||||
With spiceterm you can start commands and export its standard input and
|
||||
output to any SPICE client (simulating a xterm Terminal).
|
||||
|
||||
%prep
|
||||
%setup -q -n %sname -a1 -a2
|
||||
ln -s spice-0* spice
|
||||
|
||||
pushd spice
|
||||
%patch0 -p1
|
||||
popd
|
||||
%patch10 -p1 -b .alt
|
||||
%patch11 -p0
|
||||
|
||||
rm -f spice/subprojects/spice-common/common/generated_*
|
||||
%setup -q -n %sname
|
||||
|
||||
%build
|
||||
pushd spice
|
||||
%autoreconf
|
||||
%configure \
|
||||
--disable-smartcard \
|
||||
--disable-celt051 \
|
||||
--enable-lz4 \
|
||||
--enable-static \
|
||||
--with-sasl
|
||||
%make_build
|
||||
popd
|
||||
|
||||
%make -C src
|
||||
|
||||
%install
|
||||
@ -62,6 +34,9 @@ popd
|
||||
%_man1dir/%sname.1*
|
||||
|
||||
%changelog
|
||||
* Wed Aug 28 2019 Valery Inozemtsev <shrek@altlinux.ru> 3.1.1-alt2
|
||||
- rebuild with system library
|
||||
|
||||
* Mon Aug 05 2019 Valery Inozemtsev <shrek@altlinux.ru> 3.1.1-alt1
|
||||
- 3.1-1
|
||||
|
||||
|
@ -1,25 +0,0 @@
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in
|
||||
the documentation and/or other materials provided with the
|
||||
distribution.
|
||||
* Neither the name of the copyright holder nor the names of its
|
||||
contributors may be used to endorse or promote products derived
|
||||
from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS
|
||||
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
@ -1,27 +0,0 @@
|
||||
NULL =
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
SUBDIRS = spice
|
||||
|
||||
pkgconfigdir = $(datadir)/pkgconfig
|
||||
pkgconfig_DATA = spice-protocol.pc
|
||||
|
||||
MAINTAINERCLEANFILES = \
|
||||
$(srcdir)/INSTALL \
|
||||
$(srcdir)/aclocal.m4 \
|
||||
$(srcdir)/autoscan.log \
|
||||
$(srcdir)/compile \
|
||||
$(srcdir)/config.guess \
|
||||
$(srcdir)/config.h.in \
|
||||
$(srcdir)/config.sub \
|
||||
$(srcdir)/configure.scan \
|
||||
$(srcdir)/depcomp \
|
||||
$(srcdir)/install-sh \
|
||||
$(srcdir)/ltmain.sh \
|
||||
$(srcdir)/missing \
|
||||
$(srcdir)/mkinstalldirs \
|
||||
`find "$(srcdir)" -type f -name Makefile.in -print` \
|
||||
$(NULL)
|
||||
|
||||
EXTRA_DIST = meson.build
|
||||
|
||||
-include $(top_srcdir)/git.mk
|
@ -1,194 +0,0 @@
|
||||
Major changes in 0.12.15
|
||||
========================
|
||||
* Add support for h265 video codec
|
||||
* qxl_dev: Align QXLRam to 4 bytes
|
||||
* meson: fix spice-protocol as subproject
|
||||
|
||||
Major changes in 0.12.14
|
||||
========================
|
||||
* add stream-device protocol
|
||||
* add SPICE_SURFACE_FLAGS_STREAMING_MODE flag
|
||||
* add e2k (Elbrus 2000) architecture
|
||||
* add SPICE_MAX_NUM_STREAMS
|
||||
* add meson support
|
||||
* add bult-ins byte swapping for Visual C++
|
||||
* switch to built-ins byte swapping in GCC
|
||||
|
||||
Major changes in 0.12.13
|
||||
========================
|
||||
* add DISPLAY_PREFERRED_VIDEO_CODEC_TYPE
|
||||
* add VP9 codec type
|
||||
* add VD_AGENT_CLEAR_CAPABILITY() macro
|
||||
* add VD_AGENT_CAP_FILE_XFER_DISABLED
|
||||
* add VD_AGENT_FILE_XFER_STATUS_NOT_ENOUGH_SPACE
|
||||
* add new file-xfer statuses for detailed error
|
||||
* Change enums.h license to MIT
|
||||
|
||||
Major changes in 0.12.12
|
||||
========================
|
||||
* protocol: Add lz4 compression support to the SpiceVMC channel
|
||||
|
||||
Major changes in 0.12.11
|
||||
========================
|
||||
* protocol: add support for the VP8 and h264 video codecs
|
||||
* protocol: add unix GL scanout messages
|
||||
* remove code generation scripts, moved back to spice-common
|
||||
* macros improvements, more type safety
|
||||
|
||||
Major changes in 0.12.10
|
||||
========================
|
||||
* Add VD_AGENT_CAP_MONITORS_CONFIG_POSITION to handle multi-monitor
|
||||
configurations that are not multi-head
|
||||
* Add protocol code generation scripts from spice-common
|
||||
* Endianness and compiler portability fixes (clang)
|
||||
|
||||
Major changes in 0.12.9
|
||||
=======================
|
||||
* rename newly introduced SpiceImageCompress enum to SpiceImageCompression
|
||||
as otherwise it was clashing with the definition used by older spice-server
|
||||
releases, breaking QEMU build
|
||||
|
||||
Major changes in 0.12.8
|
||||
=======================
|
||||
* add LZ4 support
|
||||
* add audio volume synchronization
|
||||
* deprecate unused vdi-dev
|
||||
* add 'preferred-compression' message/capability
|
||||
* add a new Windows driver escape code to send
|
||||
monitors capability from guest to client
|
||||
|
||||
Major changes in 0.12.7
|
||||
=======================
|
||||
* add support for Webdav channel
|
||||
* add support for the Opus codec
|
||||
|
||||
Major changes in 0.12.6
|
||||
=======================
|
||||
* add adaptive video streaming support:
|
||||
control playback latency and receive playback
|
||||
reports from the client.
|
||||
* add agent capabilities for signaling guest line ending.
|
||||
|
||||
Major changes in 0.12.5
|
||||
=======================
|
||||
* Add agent file xfer success status
|
||||
* Add a client-disconnected agent message
|
||||
|
||||
Major changes in 0.12.4
|
||||
=======================
|
||||
* Add agent file copy support.
|
||||
* Add agent sparse monitors capability.
|
||||
* Add controller proxy message.
|
||||
|
||||
Major changes in 0.12.3
|
||||
=======================
|
||||
* Add a generic "port" channel
|
||||
|
||||
Major changes in 0.12.2
|
||||
=======================
|
||||
* Add A8 surface capability in display channel.
|
||||
* Add to qxl device support for:
|
||||
* client present
|
||||
* client capabilities
|
||||
* client monitors configuration
|
||||
|
||||
Major changes in 0.12.1
|
||||
=======================
|
||||
* Support seamless migration.
|
||||
* New QXLComposite message for better X support.
|
||||
* Support arbitrary scancode message INPUTS_KEY_SCANCODE.
|
||||
|
||||
Major changes in 0.12.0
|
||||
=======================
|
||||
* Add support for arbitrary resolution on Windows QXL with
|
||||
QXL_ESCAPE_SET_CUSTOM_DISPLAY
|
||||
* Add support for arbitrary resolution and multiple monitor per
|
||||
display channel with QXLMonitorsConfig and co
|
||||
* build cleanup
|
||||
|
||||
Major changes in 0.10.3 (0.10.2 was never released)
|
||||
===================================================
|
||||
* Add support for video streams with differently sized (wxh) data
|
||||
* Add controller messages for USB redirection, COLOR_DEPTH, DISABLE_EFFECTS,
|
||||
and ENABLE_SMARTCARD
|
||||
* Add name & uuid messages on main channel
|
||||
* some cleanups
|
||||
* Fixes RHBZ#815422, RHBZ#807295, RHBZ#787447
|
||||
|
||||
Major changes in 0.10.1
|
||||
=======================
|
||||
* Add support for a header without sublist and serial (mini header)
|
||||
|
||||
Major changes in 0.10.0
|
||||
=======================
|
||||
* no changes, released to match version with spice
|
||||
|
||||
Major changes in 0.9.1 (same as 0.8.2 in 0.8 branch)
|
||||
======================
|
||||
* Add support for semi-seamless migration
|
||||
|
||||
Major changes in 0.9.0
|
||||
======================
|
||||
* Add support for generic spicevmc chardev passthrough messages
|
||||
* Add USB redirection channel
|
||||
|
||||
Major changes in 0.8.1
|
||||
======================
|
||||
* Add support for volume change
|
||||
* Add support for async guest io writes and interrupt
|
||||
* Add support for suspend related guest io writes
|
||||
* Add support for interrupt indicating guest bug
|
||||
|
||||
Major changes in 0.8.0
|
||||
======================
|
||||
* Add support for different clipboards (selections) to vd_agent copy paste
|
||||
* Add support for using different authentication mechanisms (just SASL for now)
|
||||
|
||||
Major changes in 0.7.1
|
||||
======================
|
||||
* Add some enums for the xorg qxl driver
|
||||
* Some other small fixes
|
||||
|
||||
Major changes in 0.7.0
|
||||
======================
|
||||
* Add smartcard channel
|
||||
|
||||
Major changes in 0.6.4
|
||||
======================
|
||||
* Make controller client protocol menu text UTF8 rather then 16 bit unicode
|
||||
|
||||
Major changes in 0.6.3:
|
||||
=======================
|
||||
* Add support for copy and paste to the agent protocol
|
||||
* Add foreign-menu and external controller client protocol headers
|
||||
|
||||
Major changes in 0.6.2:
|
||||
=======================
|
||||
* Skipped to stay in sync with spice
|
||||
|
||||
Major changes in 0.6.1:
|
||||
=======================
|
||||
* Added compat flag for 16bpp commands
|
||||
|
||||
Major changes in 0.6.0:
|
||||
=======================
|
||||
* Initial messages for clipboard sharing
|
||||
* Move agent protocol structs from spice to spice-protocol
|
||||
* Add capabilities to agent protocol
|
||||
|
||||
Major changes in 0.5.3:
|
||||
=======================
|
||||
|
||||
Network major number changed to 2 to reflect that the network
|
||||
protocol is now stable and backwards compatible from this point.
|
||||
|
||||
Some vdagent messages for display settings and clipboard sharing
|
||||
were added.
|
||||
|
||||
Major changes in 0.5.2:
|
||||
=======================
|
||||
|
||||
This is the first release of the unstable 0.5.x series leading up to 0.6.
|
||||
This module was split out of spice so that e.g. drivers and qemu can
|
||||
get the types and constants they need without using the full spice
|
||||
codebase.
|
@ -1,19 +0,0 @@
|
||||
#! /bin/sh
|
||||
|
||||
set -e # exit on errors
|
||||
|
||||
srcdir=`dirname $0`
|
||||
test -z "$srcdir" && srcdir=.
|
||||
|
||||
|
||||
(
|
||||
cd "$srcdir"
|
||||
autoreconf --verbose --force --install
|
||||
)
|
||||
|
||||
CONFIGURE_ARGS="--enable-maintainer-mode"
|
||||
|
||||
if [ -z "$NOCONFIGURE" ]; then
|
||||
echo "Running configure with $CONFIGURE_ARGS $@"
|
||||
"$srcdir/configure" $CONFIGURE_ARGS "$@"
|
||||
fi
|
@ -1,21 +0,0 @@
|
||||
AC_PREREQ([2.57])
|
||||
|
||||
m4_define([SPICE_MAJOR], 0)
|
||||
m4_define([SPICE_MINOR], 12)
|
||||
m4_define([SPICE_MICRO], 15)
|
||||
|
||||
AC_INIT(spice-protocol, [SPICE_MAJOR.SPICE_MINOR.SPICE_MICRO], [], spice-protocol)
|
||||
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
AM_CONFIG_HEADER([config.h])
|
||||
|
||||
AM_INIT_AUTOMAKE([dist-bzip2])
|
||||
AM_MAINTAINER_MODE
|
||||
|
||||
m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
|
||||
|
||||
AC_OUTPUT([
|
||||
Makefile
|
||||
spice-protocol.pc
|
||||
spice/Makefile
|
||||
])
|
@ -1,227 +0,0 @@
|
||||
# git.mk
|
||||
#
|
||||
# Copyright 2009, Red Hat, Inc.
|
||||
# Copyright 2010,2011 Behdad Esfahbod
|
||||
# Written by Behdad Esfahbod
|
||||
#
|
||||
# Copying and distribution of this file, with or without modification,
|
||||
# is permitted in any medium without royalty provided the copyright
|
||||
# notice and this notice are preserved.
|
||||
#
|
||||
# The latest version of this file can be downloaded from:
|
||||
# https://raw.github.com/behdad/git.mk/master/git.mk
|
||||
# Bugs, etc, should be reported upstream at:
|
||||
# https://github.com/behdad/git.mk
|
||||
#
|
||||
# To use in your project, import this file in your git repo's toplevel,
|
||||
# then do "make -f git.mk". This modifies all Makefile.am files in
|
||||
# your project to -include git.mk. Remember to add that line to new
|
||||
# Makefile.am files you create in your project, or just rerun the
|
||||
# "make -f git.mk".
|
||||
#
|
||||
# This enables automatic .gitignore generation. If you need to ignore
|
||||
# more files, add them to the GITIGNOREFILES variable in your Makefile.am.
|
||||
# But think twice before doing that. If a file has to be in .gitignore,
|
||||
# chances are very high that it's a generated file and should be in one
|
||||
# of MOSTLYCLEANFILES, CLEANFILES, DISTCLEANFILES, or MAINTAINERCLEANFILES.
|
||||
#
|
||||
# The only case that you need to manually add a file to GITIGNOREFILES is
|
||||
# when remove files in one of mostlyclean-local, clean-local, distclean-local,
|
||||
# or maintainer-clean-local make targets.
|
||||
#
|
||||
# Note that for files like editor backup, etc, there are better places to
|
||||
# ignore them. See "man gitignore".
|
||||
#
|
||||
# If "make maintainer-clean" removes the files but they are not recognized
|
||||
# by this script (that is, if "git status" shows untracked files still), send
|
||||
# me the output of "git status" as well as your Makefile.am and Makefile for
|
||||
# the directories involved and I'll diagnose.
|
||||
#
|
||||
# For a list of toplevel files that should be in MAINTAINERCLEANFILES, see
|
||||
# Makefile.am.sample in the git.mk git repo.
|
||||
#
|
||||
# Don't EXTRA_DIST this file. It is supposed to only live in git clones,
|
||||
# not tarballs. It serves no useful purpose in tarballs and clutters the
|
||||
# build dir.
|
||||
#
|
||||
# This file knows how to handle autoconf, automake, libtool, gtk-doc,
|
||||
# gnome-doc-utils, yelp.m4, mallard, intltool, gsettings, dejagnu.
|
||||
#
|
||||
# This makefile provides the following targets:
|
||||
#
|
||||
# - all: "make all" will build all gitignore files.
|
||||
# - gitignore: makes all gitignore files in the current dir and subdirs.
|
||||
# - .gitignore: make gitignore file for the current dir.
|
||||
# - gitignore-recurse: makes all gitignore files in the subdirs.
|
||||
#
|
||||
# KNOWN ISSUES:
|
||||
#
|
||||
# - Recursive configure doesn't work as $(top_srcdir)/git.mk inside the
|
||||
# submodule doesn't find us. If you have configure.{in,ac} files in
|
||||
# subdirs, add a proxy git.mk file in those dirs that simply does:
|
||||
# "include $(top_srcdir)/../git.mk". Add more ..'s to your taste.
|
||||
# And add those files to git. See vte/gnome-pty-helper/git.mk for
|
||||
# example.
|
||||
#
|
||||
|
||||
git-all: git-mk-install
|
||||
|
||||
git-mk-install:
|
||||
@echo Installing git makefile
|
||||
@any_failed=; \
|
||||
find "`test -z "$(top_srcdir)" && echo . || echo "$(top_srcdir)"`" -name Makefile.am | while read x; do \
|
||||
if grep 'include .*/git.mk' $$x >/dev/null; then \
|
||||
echo $$x already includes git.mk; \
|
||||
else \
|
||||
failed=; \
|
||||
echo "Updating $$x"; \
|
||||
{ cat $$x; \
|
||||
echo ''; \
|
||||
echo '-include $$(top_srcdir)/git.mk'; \
|
||||
} > $$x.tmp || failed=1; \
|
||||
if test x$$failed = x; then \
|
||||
mv $$x.tmp $$x || failed=1; \
|
||||
fi; \
|
||||
if test x$$failed = x; then : else \
|
||||
echo Failed updating $$x; >&2 \
|
||||
any_failed=1; \
|
||||
fi; \
|
||||
fi; done; test -z "$$any_failed"
|
||||
|
||||
.PHONY: git-all git-mk-install
|
||||
|
||||
|
||||
### .gitignore generation
|
||||
|
||||
$(srcdir)/.gitignore: Makefile.am $(top_srcdir)/git.mk
|
||||
$(AM_V_GEN) \
|
||||
{ \
|
||||
if test "x$(DOC_MODULE)" = x -o "x$(DOC_MAIN_SGML_FILE)" = x; then :; else \
|
||||
for x in \
|
||||
$(DOC_MODULE)-decl-list.txt \
|
||||
$(DOC_MODULE)-decl.txt \
|
||||
tmpl/$(DOC_MODULE)-unused.sgml \
|
||||
"tmpl/*.bak" \
|
||||
xml html \
|
||||
; do echo /$$x; done; \
|
||||
fi; \
|
||||
if test "x$(DOC_MODULE)$(DOC_ID)" = x -o "x$(DOC_LINGUAS)" = x; then :; else \
|
||||
for lc in $(DOC_LINGUAS); do \
|
||||
for x in \
|
||||
$(if $(DOC_MODULE),$(DOC_MODULE).xml) \
|
||||
$(DOC_PAGES) \
|
||||
$(DOC_INCLUDES) \
|
||||
; do echo /$$lc/$$x; done; \
|
||||
done; \
|
||||
for x in \
|
||||
$(_DOC_OMF_ALL) \
|
||||
$(_DOC_DSK_ALL) \
|
||||
$(_DOC_HTML_ALL) \
|
||||
$(_DOC_MOFILES) \
|
||||
$(DOC_H_FILE) \
|
||||
"*/.xml2po.mo" \
|
||||
"*/*.omf.out" \
|
||||
; do echo /$$x; done; \
|
||||
fi; \
|
||||
if test "x$(HELP_ID)" = x -o "x$(HELP_LINGUAS)" = x; then :; else \
|
||||
for lc in $(HELP_LINGUAS); do \
|
||||
for x in \
|
||||
$(HELP_FILES) \
|
||||
"$$lc.stamp" \
|
||||
"$$lc.mo" \
|
||||
; do echo /$$lc/$$x; done; \
|
||||
done; \
|
||||
fi; \
|
||||
if test "x$(gsettings_SCHEMAS)" = x; then :; else \
|
||||
for x in \
|
||||
$(gsettings_SCHEMAS:.xml=.valid) \
|
||||
$(gsettings__enum_file) \
|
||||
; do echo /$$x; done; \
|
||||
fi; \
|
||||
if test -f $(srcdir)/po/Makefile.in.in; then \
|
||||
for x in \
|
||||
po/Makefile.in.in \
|
||||
po/Makefile.in \
|
||||
po/Makefile \
|
||||
po/POTFILES \
|
||||
po/stamp-it \
|
||||
po/.intltool-merge-cache \
|
||||
"po/*.gmo" \
|
||||
"po/*.mo" \
|
||||
po/$(GETTEXT_PACKAGE).pot \
|
||||
intltool-extract.in \
|
||||
intltool-merge.in \
|
||||
intltool-update.in \
|
||||
; do echo /$$x; done; \
|
||||
fi; \
|
||||
if test -f $(srcdir)/configure; then \
|
||||
for x in \
|
||||
autom4te.cache \
|
||||
configure \
|
||||
config.h \
|
||||
stamp-h1 \
|
||||
libtool \
|
||||
config.lt \
|
||||
; do echo /$$x; done; \
|
||||
fi; \
|
||||
if test "x$(DEJATOOL)" = x; then :; else \
|
||||
for x in \
|
||||
$(DEJATOOL) \
|
||||
; do echo /$$x.sum; echo /$$x.log; done; \
|
||||
echo /site.exp; \
|
||||
fi; \
|
||||
for x in \
|
||||
.gitignore \
|
||||
$(GITIGNOREFILES) \
|
||||
$(CLEANFILES) \
|
||||
$(PROGRAMS) $(check_PROGRAMS) $(EXTRA_PROGRAMS) \
|
||||
$(LIBRARIES) $(check_LIBRARIES) $(EXTRA_LIBRARIES) \
|
||||
$(LTLIBRARIES) $(check_LTLIBRARIES) $(EXTRA_LTLIBRARIES) \
|
||||
so_locations \
|
||||
.libs _libs \
|
||||
$(MOSTLYCLEANFILES) \
|
||||
"*.$(OBJEXT)" \
|
||||
"*.lo" \
|
||||
$(DISTCLEANFILES) \
|
||||
$(am__CONFIG_DISTCLEAN_FILES) \
|
||||
$(CONFIG_CLEAN_FILES) \
|
||||
TAGS ID GTAGS GRTAGS GSYMS GPATH tags \
|
||||
"*.tab.c" \
|
||||
$(MAINTAINERCLEANFILES) \
|
||||
$(BUILT_SOURCES) \
|
||||
$(DEPDIR) \
|
||||
Makefile \
|
||||
Makefile.in \
|
||||
"*.orig" \
|
||||
"*.rej" \
|
||||
"*.bak" \
|
||||
"*~" \
|
||||
".*.sw[nop]" \
|
||||
".dirstamp" \
|
||||
; do echo /$$x; done; \
|
||||
} | \
|
||||
sed "s@^/`echo "$(srcdir)" | sed 's/\(.\)/[\1]/g'`/@/@" | \
|
||||
sed 's@/[.]/@/@g' | \
|
||||
LC_ALL=C sort | uniq > $@.tmp && \
|
||||
mv $@.tmp $@;
|
||||
|
||||
all: $(srcdir)/.gitignore gitignore-recurse-maybe
|
||||
gitignore: $(srcdir)/.gitignore gitignore-recurse
|
||||
|
||||
gitignore-recurse-maybe:
|
||||
@for subdir in $(DIST_SUBDIRS); do \
|
||||
case " $(SUBDIRS) " in \
|
||||
*" $$subdir "*) :;; \
|
||||
*) test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) .gitignore gitignore-recurse-maybe || echo "Skipping $$subdir");; \
|
||||
esac; \
|
||||
done
|
||||
gitignore-recurse:
|
||||
@for subdir in $(DIST_SUBDIRS); do \
|
||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) .gitignore gitignore-recurse || echo "Skipping $$subdir"); \
|
||||
done
|
||||
|
||||
maintainer-clean: gitignore-clean
|
||||
gitignore-clean:
|
||||
-rm -f $(srcdir)/.gitignore
|
||||
|
||||
.PHONY: gitignore-clean gitignore gitignore-recurse gitignore-recurse-maybe
|
@ -1,49 +0,0 @@
|
||||
# ===========================================================================
|
||||
# http://www.gnu.org/software/autoconf-archive/ax_python_module.html
|
||||
# ===========================================================================
|
||||
#
|
||||
# SYNOPSIS
|
||||
#
|
||||
# AX_PYTHON_MODULE(modname[, fatal])
|
||||
#
|
||||
# DESCRIPTION
|
||||
#
|
||||
# Checks for Python module.
|
||||
#
|
||||
# If fatal is non-empty then absence of a module will trigger an error.
|
||||
#
|
||||
# LICENSE
|
||||
#
|
||||
# Copyright (c) 2008 Andrew Collier
|
||||
#
|
||||
# Copying and distribution of this file, with or without modification, are
|
||||
# permitted in any medium without royalty provided the copyright notice
|
||||
# and this notice are preserved. This file is offered as-is, without any
|
||||
# warranty.
|
||||
|
||||
#serial 6
|
||||
|
||||
AU_ALIAS([AC_PYTHON_MODULE], [AX_PYTHON_MODULE])
|
||||
AC_DEFUN([AX_PYTHON_MODULE],[
|
||||
if test -z $PYTHON;
|
||||
then
|
||||
PYTHON="python"
|
||||
fi
|
||||
PYTHON_NAME=`basename $PYTHON`
|
||||
AC_MSG_CHECKING($PYTHON_NAME module: $1)
|
||||
$PYTHON -c "import $1" 2>/dev/null
|
||||
if test $? -eq 0;
|
||||
then
|
||||
AC_MSG_RESULT(yes)
|
||||
eval AS_TR_CPP(HAVE_PYMOD_$1)=yes
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
eval AS_TR_CPP(HAVE_PYMOD_$1)=no
|
||||
#
|
||||
if test -n "$2"
|
||||
then
|
||||
AC_MSG_ERROR(failed to find required module $1)
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
])
|
@ -1,25 +0,0 @@
|
||||
#
|
||||
# project definition
|
||||
#
|
||||
project('spice-protocol', 'c',
|
||||
version : '0.12.15',
|
||||
license : 'BSD',
|
||||
meson_version : '>= 0.41.0')
|
||||
|
||||
subdir('spice')
|
||||
|
||||
spice_protocol_dep = declare_dependency(include_directories : include_directories('.'))
|
||||
|
||||
#
|
||||
# spice-protocol.pc generation
|
||||
#
|
||||
datadir = get_option('datadir')
|
||||
pkgconfig_dir = join_paths(get_option('prefix'), datadir, 'pkgconfig')
|
||||
|
||||
pkgconfig = import('pkgconfig')
|
||||
pkgconfig.generate(name : meson.project_name(),
|
||||
description : 'SPICE protocol headers',
|
||||
version : meson.project_version(),
|
||||
subdirs : 'spice-1',
|
||||
install_dir : pkgconfig_dir,
|
||||
variables : 'datadir=@0@'.format(join_paths('${prefix}', datadir)))
|
@ -1,10 +0,0 @@
|
||||
prefix=@prefix@
|
||||
includedir=@includedir@
|
||||
datadir=${prefix}/share
|
||||
|
||||
Name: spice-protocol
|
||||
Description: SPICE protocol headers
|
||||
Version: @VERSION@
|
||||
|
||||
Libs:
|
||||
Cflags: -I${includedir}/spice-1
|
@ -1,26 +0,0 @@
|
||||
NULL =
|
||||
|
||||
spice_protocol_includedir = $(includedir)/spice-1/spice
|
||||
|
||||
spice_protocol_include_HEADERS = \
|
||||
barrier.h \
|
||||
controller_prot.h \
|
||||
end-packed.h \
|
||||
enums.h \
|
||||
foreign_menu_prot.h \
|
||||
ipc_ring.h \
|
||||
macros.h \
|
||||
protocol.h \
|
||||
qxl_dev.h \
|
||||
qxl_windows.h \
|
||||
start-packed.h \
|
||||
stats.h \
|
||||
types.h \
|
||||
vd_agent.h \
|
||||
vdi_dev.h \
|
||||
stream-device.h \
|
||||
$(NULL)
|
||||
|
||||
EXTRA_DIST = meson.build
|
||||
|
||||
-include $(top_srcdir)/git.mk
|
@ -1,50 +0,0 @@
|
||||
/* -*- Mode: C; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
||||
/*
|
||||
Copyright (C) 2009 Red Hat, Inc.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in
|
||||
the documentation and/or other materials provided with the
|
||||
distribution.
|
||||
* Neither the name of the copyright holder nor the names of its
|
||||
contributors may be used to endorse or promote products derived
|
||||
from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS
|
||||
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef _H_SPICE_BARRIER
|
||||
#define _H_SPICE_BARRIER
|
||||
|
||||
#ifdef __GNUC__
|
||||
|
||||
#define spice_mb() __sync_synchronize ()
|
||||
|
||||
#else
|
||||
|
||||
#ifdef _WIN64
|
||||
//__asm not supported on _WIN64, so use macro instead.
|
||||
#define spice_mb MemoryBarrier
|
||||
#else
|
||||
#define spice_mb() __asm {lock add [esp], 0}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* _H_SPICE_BARRIER */
|
@ -1,125 +0,0 @@
|
||||
/*
|
||||
Copyright (C) 2009 Red Hat, Inc.
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _H_CONTROLLER_PROT
|
||||
#define _H_CONTROLLER_PROT
|
||||
|
||||
#include <spice/macros.h>
|
||||
#include <spice/types.h>
|
||||
#include <spice/start-packed.h>
|
||||
|
||||
#define CONTROLLER_MAGIC SPICE_MAGIC_CONST("CTRL")
|
||||
#define CONTROLLER_VERSION 1
|
||||
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED ControllerInitHeader {
|
||||
uint32_t magic;
|
||||
uint32_t version;
|
||||
uint32_t size;
|
||||
} ControllerInitHeader;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED ControllerInit {
|
||||
ControllerInitHeader base;
|
||||
uint64_t credentials;
|
||||
uint32_t flags;
|
||||
} ControllerInit;
|
||||
|
||||
enum {
|
||||
CONTROLLER_FLAG_EXCLUSIVE = 1 << 0,
|
||||
};
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED ControllerMsg {
|
||||
uint32_t id;
|
||||
uint32_t size;
|
||||
} ControllerMsg;
|
||||
|
||||
enum {
|
||||
//external app -> spice client
|
||||
CONTROLLER_HOST = 1,
|
||||
CONTROLLER_PORT,
|
||||
CONTROLLER_SPORT,
|
||||
CONTROLLER_PASSWORD,
|
||||
|
||||
CONTROLLER_SECURE_CHANNELS,
|
||||
CONTROLLER_DISABLE_CHANNELS,
|
||||
|
||||
CONTROLLER_TLS_CIPHERS,
|
||||
CONTROLLER_CA_FILE,
|
||||
CONTROLLER_HOST_SUBJECT,
|
||||
|
||||
CONTROLLER_FULL_SCREEN,
|
||||
CONTROLLER_SET_TITLE,
|
||||
|
||||
CONTROLLER_CREATE_MENU,
|
||||
CONTROLLER_DELETE_MENU,
|
||||
|
||||
CONTROLLER_HOTKEYS,
|
||||
CONTROLLER_SEND_CAD,
|
||||
|
||||
CONTROLLER_CONNECT,
|
||||
CONTROLLER_SHOW,
|
||||
CONTROLLER_HIDE,
|
||||
|
||||
CONTROLLER_ENABLE_SMARTCARD,
|
||||
|
||||
CONTROLLER_COLOR_DEPTH,
|
||||
CONTROLLER_DISABLE_EFFECTS,
|
||||
|
||||
CONTROLLER_ENABLE_USB,
|
||||
CONTROLLER_ENABLE_USB_AUTOSHARE,
|
||||
CONTROLLER_USB_FILTER,
|
||||
|
||||
CONTROLLER_PROXY,
|
||||
|
||||
//spice client -> external app
|
||||
CONTROLLER_MENU_ITEM_CLICK = 1001,
|
||||
};
|
||||
|
||||
#define CONTROLLER_TRUE (1 << 0)
|
||||
|
||||
enum {
|
||||
CONTROLLER_SET_FULL_SCREEN = CONTROLLER_TRUE,
|
||||
CONTROLLER_AUTO_DISPLAY_RES = 1 << 1,
|
||||
};
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED ControllerValue {
|
||||
ControllerMsg base;
|
||||
uint32_t value;
|
||||
} ControllerValue;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED ControllerData {
|
||||
ControllerMsg base;
|
||||
uint8_t data[0];
|
||||
} ControllerData;
|
||||
|
||||
#define CONTROLLER_MENU_ITEM_DELIMITER "\n"
|
||||
#define CONTROLLER_MENU_PARAM_DELIMITER "\r"
|
||||
|
||||
enum {
|
||||
CONTROLLER_MENU_FLAGS_SEPARATOR = 1 << 0,
|
||||
CONTROLLER_MENU_FLAGS_DISABLED = 1 << 1,
|
||||
CONTROLLER_MENU_FLAGS_POPUP = 1 << 2,
|
||||
CONTROLLER_MENU_FLAGS_CHECKED = 1 << 3,
|
||||
CONTROLLER_MENU_FLAGS_GRAYED = 1 << 4,
|
||||
};
|
||||
|
||||
#define SPICE_MENU_INTERNAL_ID_BASE 0x1300
|
||||
#define SPICE_MENU_INTERNAL_ID_SHIFT 8
|
||||
|
||||
#include <spice/end-packed.h>
|
||||
|
||||
#endif
|
@ -1,39 +0,0 @@
|
||||
/* -*- Mode: C; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
||||
/*
|
||||
Copyright (C) 2009 Red Hat, Inc.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in
|
||||
the documentation and/or other materials provided with the
|
||||
distribution.
|
||||
* Neither the name of the copyright holder nor the names of its
|
||||
contributors may be used to endorse or promote products derived
|
||||
from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS
|
||||
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/* See start-packed.h for details */
|
||||
|
||||
#undef SPICE_ATTR_PACKED
|
||||
#undef SPICE_ATTR_ALIGNED
|
||||
|
||||
#if defined(__MINGW32__) || !defined(__GNUC__)
|
||||
#pragma pack(pop)
|
||||
#endif
|
@ -1,686 +0,0 @@
|
||||
/* this is a file autogenerated by spice_codegen.py */
|
||||
/*
|
||||
Copyright (C) 2013 Red Hat, Inc.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in
|
||||
the documentation and/or other materials provided with the
|
||||
distribution.
|
||||
* Neither the name of the copyright holder nor the names of its
|
||||
contributors may be used to endorse or promote products derived
|
||||
from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS
|
||||
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef _H_SPICE_ENUMS
|
||||
#define _H_SPICE_ENUMS
|
||||
|
||||
typedef enum SpiceLinkErr {
|
||||
SPICE_LINK_ERR_OK,
|
||||
SPICE_LINK_ERR_ERROR,
|
||||
SPICE_LINK_ERR_INVALID_MAGIC,
|
||||
SPICE_LINK_ERR_INVALID_DATA,
|
||||
SPICE_LINK_ERR_VERSION_MISMATCH,
|
||||
SPICE_LINK_ERR_NEED_SECURED,
|
||||
SPICE_LINK_ERR_NEED_UNSECURED,
|
||||
SPICE_LINK_ERR_PERMISSION_DENIED,
|
||||
SPICE_LINK_ERR_BAD_CONNECTION_ID,
|
||||
SPICE_LINK_ERR_CHANNEL_NOT_AVAILABLE,
|
||||
|
||||
SPICE_LINK_ERR_ENUM_END
|
||||
} SpiceLinkErr;
|
||||
|
||||
typedef enum SpiceWarnCode {
|
||||
SPICE_WARN_GENERAL,
|
||||
|
||||
SPICE_WARN_CODE_ENUM_END
|
||||
} SpiceWarnCode;
|
||||
|
||||
typedef enum SpiceInfoCode {
|
||||
SPICE_INFO_GENERAL,
|
||||
|
||||
SPICE_INFO_CODE_ENUM_END
|
||||
} SpiceInfoCode;
|
||||
|
||||
typedef enum SpiceMigrateFlags {
|
||||
SPICE_MIGRATE_NEED_FLUSH = (1 << 0),
|
||||
SPICE_MIGRATE_NEED_DATA_TRANSFER = (1 << 1),
|
||||
|
||||
SPICE_MIGRATE_FLAGS_MASK = 0x3
|
||||
} SpiceMigrateFlags;
|
||||
|
||||
typedef enum SpiceCompositeFlags {
|
||||
SPICE_COMPOSITE_OP0 = (1 << 0),
|
||||
SPICE_COMPOSITE_OP1 = (1 << 1),
|
||||
SPICE_COMPOSITE_OP2 = (1 << 2),
|
||||
SPICE_COMPOSITE_OP3 = (1 << 3),
|
||||
SPICE_COMPOSITE_OP4 = (1 << 4),
|
||||
SPICE_COMPOSITE_OP5 = (1 << 5),
|
||||
SPICE_COMPOSITE_OP6 = (1 << 6),
|
||||
SPICE_COMPOSITE_OP7 = (1 << 7),
|
||||
SPICE_COMPOSITE_SRC_FILTER0 = (1 << 8),
|
||||
SPICE_COMPOSITE_SRC_FILTER1 = (1 << 9),
|
||||
SPICE_COMPOSITE_SRC_FILTER2 = (1 << 10),
|
||||
SPICE_COMPOSITE_MASK_FILTER0 = (1 << 11),
|
||||
SPICE_COMPOSITE_MASK_FITLER1 = (1 << 12),
|
||||
SPICE_COMPOSITE_MASK_FILTER2 = (1 << 13),
|
||||
SPICE_COMPOSITE_SRC_REPEAT0 = (1 << 14),
|
||||
SPICE_COMPOSITE_SRC_REPEAT1 = (1 << 15),
|
||||
SPICE_COMPOSITE_MASK_REPEAT0 = (1 << 16),
|
||||
SPICE_COMPOSITE_MASK_REPEAT1 = (1 << 17),
|
||||
SPICE_COMPOSITE_COMPONENT_ALPHA = (1 << 18),
|
||||
SPICE_COMPOSITE_HAS_MASK = (1 << 19),
|
||||
SPICE_COMPOSITE_HAS_SRC_TRANSFORM = (1 << 20),
|
||||
SPICE_COMPOSITE_HAS_MASK_TRANSFORM = (1 << 21),
|
||||
SPICE_COMPOSITE_SOURCE_OPAQUE = (1 << 22),
|
||||
SPICE_COMPOSITE_MASK_OPAQUE = (1 << 23),
|
||||
SPICE_COMPOSITE_DEST_OPAQUE = (1 << 24),
|
||||
|
||||
SPICE_COMPOSITE_FLAGS_MASK = 0x1ffffff
|
||||
} SpiceCompositeFlags;
|
||||
|
||||
typedef enum SpiceNotifySeverity {
|
||||
SPICE_NOTIFY_SEVERITY_INFO,
|
||||
SPICE_NOTIFY_SEVERITY_WARN,
|
||||
SPICE_NOTIFY_SEVERITY_ERROR,
|
||||
|
||||
SPICE_NOTIFY_SEVERITY_ENUM_END
|
||||
} SpiceNotifySeverity;
|
||||
|
||||
typedef enum SpiceNotifyVisibility {
|
||||
SPICE_NOTIFY_VISIBILITY_LOW,
|
||||
SPICE_NOTIFY_VISIBILITY_MEDIUM,
|
||||
SPICE_NOTIFY_VISIBILITY_HIGH,
|
||||
|
||||
SPICE_NOTIFY_VISIBILITY_ENUM_END
|
||||
} SpiceNotifyVisibility;
|
||||
|
||||
typedef enum SpiceMouseMode {
|
||||
SPICE_MOUSE_MODE_SERVER = (1 << 0),
|
||||
SPICE_MOUSE_MODE_CLIENT = (1 << 1),
|
||||
|
||||
SPICE_MOUSE_MODE_MASK = 0x3
|
||||
} SpiceMouseMode;
|
||||
|
||||
typedef enum SpicePubkeyType {
|
||||
SPICE_PUBKEY_TYPE_INVALID,
|
||||
SPICE_PUBKEY_TYPE_RSA,
|
||||
SPICE_PUBKEY_TYPE_RSA2,
|
||||
SPICE_PUBKEY_TYPE_DSA,
|
||||
SPICE_PUBKEY_TYPE_DSA1,
|
||||
SPICE_PUBKEY_TYPE_DSA2,
|
||||
SPICE_PUBKEY_TYPE_DSA3,
|
||||
SPICE_PUBKEY_TYPE_DSA4,
|
||||
SPICE_PUBKEY_TYPE_DH,
|
||||
SPICE_PUBKEY_TYPE_EC,
|
||||
|
||||
SPICE_PUBKEY_TYPE_ENUM_END
|
||||
} SpicePubkeyType;
|
||||
|
||||
typedef enum SpiceDataCompressionType {
|
||||
SPICE_DATA_COMPRESSION_TYPE_NONE,
|
||||
SPICE_DATA_COMPRESSION_TYPE_LZ4,
|
||||
|
||||
SPICE_DATA_COMPRESSION_TYPE_ENUM_END
|
||||
} SpiceDataCompressionType;
|
||||
|
||||
typedef enum SpiceClipType {
|
||||
SPICE_CLIP_TYPE_NONE,
|
||||
SPICE_CLIP_TYPE_RECTS,
|
||||
|
||||
SPICE_CLIP_TYPE_ENUM_END
|
||||
} SpiceClipType;
|
||||
|
||||
typedef enum SpicePathFlags {
|
||||
SPICE_PATH_BEGIN = (1 << 0),
|
||||
SPICE_PATH_END = (1 << 1),
|
||||
SPICE_PATH_CLOSE = (1 << 3),
|
||||
SPICE_PATH_BEZIER = (1 << 4),
|
||||
|
||||
SPICE_PATH_FLAGS_MASK = 0x1b
|
||||
} SpicePathFlags;
|
||||
|
||||
typedef enum SpiceVideoCodecType {
|
||||
SPICE_VIDEO_CODEC_TYPE_MJPEG = 1,
|
||||
SPICE_VIDEO_CODEC_TYPE_VP8,
|
||||
SPICE_VIDEO_CODEC_TYPE_H264,
|
||||
SPICE_VIDEO_CODEC_TYPE_VP9,
|
||||
SPICE_VIDEO_CODEC_TYPE_H265,
|
||||
|
||||
SPICE_VIDEO_CODEC_TYPE_ENUM_END
|
||||
} SpiceVideoCodecType;
|
||||
|
||||
typedef enum SpiceStreamFlags {
|
||||
SPICE_STREAM_FLAGS_TOP_DOWN = (1 << 0),
|
||||
|
||||
SPICE_STREAM_FLAGS_MASK = 0x1
|
||||
} SpiceStreamFlags;
|
||||
|
||||
typedef enum SpiceBrushType {
|
||||
SPICE_BRUSH_TYPE_NONE,
|
||||
SPICE_BRUSH_TYPE_SOLID,
|
||||
SPICE_BRUSH_TYPE_PATTERN,
|
||||
|
||||
SPICE_BRUSH_TYPE_ENUM_END
|
||||
} SpiceBrushType;
|
||||
|
||||
typedef enum SpiceMaskFlags {
|
||||
SPICE_MASK_FLAGS_INVERS = (1 << 0),
|
||||
|
||||
SPICE_MASK_FLAGS_MASK = 0x1
|
||||
} SpiceMaskFlags;
|
||||
|
||||
typedef enum SpiceImageType {
|
||||
SPICE_IMAGE_TYPE_BITMAP,
|
||||
SPICE_IMAGE_TYPE_QUIC,
|
||||
SPICE_IMAGE_TYPE_RESERVED,
|
||||
SPICE_IMAGE_TYPE_LZ_PLT = 100,
|
||||
SPICE_IMAGE_TYPE_LZ_RGB,
|
||||
SPICE_IMAGE_TYPE_GLZ_RGB,
|
||||
SPICE_IMAGE_TYPE_FROM_CACHE,
|
||||
SPICE_IMAGE_TYPE_SURFACE,
|
||||
SPICE_IMAGE_TYPE_JPEG,
|
||||
SPICE_IMAGE_TYPE_FROM_CACHE_LOSSLESS,
|
||||
SPICE_IMAGE_TYPE_ZLIB_GLZ_RGB,
|
||||
SPICE_IMAGE_TYPE_JPEG_ALPHA,
|
||||
SPICE_IMAGE_TYPE_LZ4,
|
||||
|
||||
SPICE_IMAGE_TYPE_ENUM_END
|
||||
} SpiceImageType;
|
||||
|
||||
typedef enum SpiceImageCompression {
|
||||
SPICE_IMAGE_COMPRESSION_INVALID,
|
||||
SPICE_IMAGE_COMPRESSION_OFF,
|
||||
SPICE_IMAGE_COMPRESSION_AUTO_GLZ,
|
||||
SPICE_IMAGE_COMPRESSION_AUTO_LZ,
|
||||
SPICE_IMAGE_COMPRESSION_QUIC,
|
||||
SPICE_IMAGE_COMPRESSION_GLZ,
|
||||
SPICE_IMAGE_COMPRESSION_LZ,
|
||||
SPICE_IMAGE_COMPRESSION_LZ4,
|
||||
|
||||
SPICE_IMAGE_COMPRESSION_ENUM_END
|
||||
} SpiceImageCompression;
|
||||
|
||||
typedef enum SpiceImageFlags {
|
||||
SPICE_IMAGE_FLAGS_CACHE_ME = (1 << 0),
|
||||
SPICE_IMAGE_FLAGS_HIGH_BITS_SET = (1 << 1),
|
||||
SPICE_IMAGE_FLAGS_CACHE_REPLACE_ME = (1 << 2),
|
||||
|
||||
SPICE_IMAGE_FLAGS_MASK = 0x7
|
||||
} SpiceImageFlags;
|
||||
|
||||
typedef enum SpiceBitmapFmt {
|
||||
SPICE_BITMAP_FMT_INVALID,
|
||||
SPICE_BITMAP_FMT_1BIT_LE,
|
||||
SPICE_BITMAP_FMT_1BIT_BE,
|
||||
SPICE_BITMAP_FMT_4BIT_LE,
|
||||
SPICE_BITMAP_FMT_4BIT_BE,
|
||||
SPICE_BITMAP_FMT_8BIT,
|
||||
SPICE_BITMAP_FMT_16BIT,
|
||||
SPICE_BITMAP_FMT_24BIT,
|
||||
SPICE_BITMAP_FMT_32BIT,
|
||||
SPICE_BITMAP_FMT_RGBA,
|
||||
SPICE_BITMAP_FMT_8BIT_A,
|
||||
|
||||
SPICE_BITMAP_FMT_ENUM_END
|
||||
} SpiceBitmapFmt;
|
||||
|
||||
typedef enum SpiceBitmapFlags {
|
||||
SPICE_BITMAP_FLAGS_PAL_CACHE_ME = (1 << 0),
|
||||
SPICE_BITMAP_FLAGS_PAL_FROM_CACHE = (1 << 1),
|
||||
SPICE_BITMAP_FLAGS_TOP_DOWN = (1 << 2),
|
||||
|
||||
SPICE_BITMAP_FLAGS_MASK = 0x7
|
||||
} SpiceBitmapFlags;
|
||||
|
||||
typedef enum SpiceJpegAlphaFlags {
|
||||
SPICE_JPEG_ALPHA_FLAGS_TOP_DOWN = (1 << 0),
|
||||
|
||||
SPICE_JPEG_ALPHA_FLAGS_MASK = 0x1
|
||||
} SpiceJpegAlphaFlags;
|
||||
|
||||
typedef enum SpiceImageScaleMode {
|
||||
SPICE_IMAGE_SCALE_MODE_INTERPOLATE,
|
||||
SPICE_IMAGE_SCALE_MODE_NEAREST,
|
||||
|
||||
SPICE_IMAGE_SCALE_MODE_ENUM_END
|
||||
} SpiceImageScaleMode;
|
||||
|
||||
typedef enum SpiceRopd {
|
||||
SPICE_ROPD_INVERS_SRC = (1 << 0),
|
||||
SPICE_ROPD_INVERS_BRUSH = (1 << 1),
|
||||
SPICE_ROPD_INVERS_DEST = (1 << 2),
|
||||
SPICE_ROPD_OP_PUT = (1 << 3),
|
||||
SPICE_ROPD_OP_OR = (1 << 4),
|
||||
SPICE_ROPD_OP_AND = (1 << 5),
|
||||
SPICE_ROPD_OP_XOR = (1 << 6),
|
||||
SPICE_ROPD_OP_BLACKNESS = (1 << 7),
|
||||
SPICE_ROPD_OP_WHITENESS = (1 << 8),
|
||||
SPICE_ROPD_OP_INVERS = (1 << 9),
|
||||
SPICE_ROPD_INVERS_RES = (1 << 10),
|
||||
|
||||
SPICE_ROPD_MASK = 0x7ff
|
||||
} SpiceRopd;
|
||||
|
||||
typedef enum SpiceLineFlags {
|
||||
SPICE_LINE_FLAGS_START_WITH_GAP = (1 << 2),
|
||||
SPICE_LINE_FLAGS_STYLED = (1 << 3),
|
||||
|
||||
SPICE_LINE_FLAGS_MASK = 0xc
|
||||
} SpiceLineFlags;
|
||||
|
||||
typedef enum SpiceStringFlags {
|
||||
SPICE_STRING_FLAGS_RASTER_A1 = (1 << 0),
|
||||
SPICE_STRING_FLAGS_RASTER_A4 = (1 << 1),
|
||||
SPICE_STRING_FLAGS_RASTER_A8 = (1 << 2),
|
||||
SPICE_STRING_FLAGS_RASTER_TOP_DOWN = (1 << 3),
|
||||
|
||||
SPICE_STRING_FLAGS_MASK = 0xf
|
||||
} SpiceStringFlags;
|
||||
|
||||
typedef enum SpiceSurfaceFlags {
|
||||
SPICE_SURFACE_FLAGS_PRIMARY = (1 << 0),
|
||||
SPICE_SURFACE_FLAGS_STREAMING_MODE = (1 << 1),
|
||||
|
||||
SPICE_SURFACE_FLAGS_MASK = 0x3
|
||||
} SpiceSurfaceFlags;
|
||||
|
||||
typedef enum SpiceSurfaceFmt {
|
||||
SPICE_SURFACE_FMT_INVALID,
|
||||
SPICE_SURFACE_FMT_1_A,
|
||||
SPICE_SURFACE_FMT_8_A = 8,
|
||||
SPICE_SURFACE_FMT_16_555 = 16,
|
||||
SPICE_SURFACE_FMT_32_xRGB = 32,
|
||||
SPICE_SURFACE_FMT_16_565 = 80,
|
||||
SPICE_SURFACE_FMT_32_ARGB = 96,
|
||||
|
||||
SPICE_SURFACE_FMT_ENUM_END
|
||||
} SpiceSurfaceFmt;
|
||||
|
||||
typedef enum SpiceAlphaFlags {
|
||||
SPICE_ALPHA_FLAGS_DEST_HAS_ALPHA = (1 << 0),
|
||||
SPICE_ALPHA_FLAGS_SRC_SURFACE_HAS_ALPHA = (1 << 1),
|
||||
|
||||
SPICE_ALPHA_FLAGS_MASK = 0x3
|
||||
} SpiceAlphaFlags;
|
||||
|
||||
typedef enum SpiceResourceType {
|
||||
SPICE_RES_TYPE_INVALID,
|
||||
SPICE_RES_TYPE_PIXMAP,
|
||||
|
||||
SPICE_RESOURCE_TYPE_ENUM_END
|
||||
} SpiceResourceType;
|
||||
|
||||
typedef enum SpiceGlScanoutFlags {
|
||||
SPICE_GL_SCANOUT_FLAGS_Y0TOP = (1 << 0),
|
||||
|
||||
SPICE_GL_SCANOUT_FLAGS_MASK = 0x1
|
||||
} SpiceGlScanoutFlags;
|
||||
|
||||
typedef enum SpiceKeyboardModifierFlags {
|
||||
SPICE_KEYBOARD_MODIFIER_FLAGS_SCROLL_LOCK = (1 << 0),
|
||||
SPICE_KEYBOARD_MODIFIER_FLAGS_NUM_LOCK = (1 << 1),
|
||||
SPICE_KEYBOARD_MODIFIER_FLAGS_CAPS_LOCK = (1 << 2),
|
||||
|
||||
SPICE_KEYBOARD_MODIFIER_FLAGS_MASK = 0x7
|
||||
} SpiceKeyboardModifierFlags;
|
||||
|
||||
typedef enum SpiceMouseButton {
|
||||
SPICE_MOUSE_BUTTON_INVALID,
|
||||
SPICE_MOUSE_BUTTON_LEFT,
|
||||
SPICE_MOUSE_BUTTON_MIDDLE,
|
||||
SPICE_MOUSE_BUTTON_RIGHT,
|
||||
SPICE_MOUSE_BUTTON_UP,
|
||||
SPICE_MOUSE_BUTTON_DOWN,
|
||||
|
||||
SPICE_MOUSE_BUTTON_ENUM_END
|
||||
} SpiceMouseButton;
|
||||
|
||||
typedef enum SpiceMouseButtonMask {
|
||||
SPICE_MOUSE_BUTTON_MASK_LEFT = (1 << 0),
|
||||
SPICE_MOUSE_BUTTON_MASK_MIDDLE = (1 << 1),
|
||||
SPICE_MOUSE_BUTTON_MASK_RIGHT = (1 << 2),
|
||||
|
||||
SPICE_MOUSE_BUTTON_MASK_MASK = 0x7
|
||||
} SpiceMouseButtonMask;
|
||||
|
||||
typedef enum SpiceCursorType {
|
||||
SPICE_CURSOR_TYPE_ALPHA,
|
||||
SPICE_CURSOR_TYPE_MONO,
|
||||
SPICE_CURSOR_TYPE_COLOR4,
|
||||
SPICE_CURSOR_TYPE_COLOR8,
|
||||
SPICE_CURSOR_TYPE_COLOR16,
|
||||
SPICE_CURSOR_TYPE_COLOR24,
|
||||
SPICE_CURSOR_TYPE_COLOR32,
|
||||
|
||||
SPICE_CURSOR_TYPE_ENUM_END
|
||||
} SpiceCursorType;
|
||||
|
||||
typedef enum SpiceCursorFlags {
|
||||
SPICE_CURSOR_FLAGS_NONE = (1 << 0),
|
||||
SPICE_CURSOR_FLAGS_CACHE_ME = (1 << 1),
|
||||
SPICE_CURSOR_FLAGS_FROM_CACHE = (1 << 2),
|
||||
|
||||
SPICE_CURSOR_FLAGS_MASK = 0x7
|
||||
} SpiceCursorFlags;
|
||||
|
||||
typedef enum SpiceAudioDataMode {
|
||||
SPICE_AUDIO_DATA_MODE_INVALID,
|
||||
SPICE_AUDIO_DATA_MODE_RAW,
|
||||
SPICE_AUDIO_DATA_MODE_CELT_0_5_1,
|
||||
SPICE_AUDIO_DATA_MODE_OPUS,
|
||||
|
||||
SPICE_AUDIO_DATA_MODE_ENUM_END
|
||||
} SpiceAudioDataMode;
|
||||
|
||||
typedef enum SpiceAudioFmt {
|
||||
SPICE_AUDIO_FMT_INVALID,
|
||||
SPICE_AUDIO_FMT_S16,
|
||||
|
||||
SPICE_AUDIO_FMT_ENUM_END
|
||||
} SpiceAudioFmt;
|
||||
|
||||
typedef enum SpiceTunnelServiceType {
|
||||
SPICE_TUNNEL_SERVICE_TYPE_INVALID,
|
||||
SPICE_TUNNEL_SERVICE_TYPE_GENERIC,
|
||||
SPICE_TUNNEL_SERVICE_TYPE_IPP,
|
||||
|
||||
SPICE_TUNNEL_SERVICE_TYPE_ENUM_END
|
||||
} SpiceTunnelServiceType;
|
||||
|
||||
typedef enum SpiceTunnelIpType {
|
||||
SPICE_TUNNEL_IP_TYPE_INVALID,
|
||||
SPICE_TUNNEL_IP_TYPE_IPv4,
|
||||
|
||||
SPICE_TUNNEL_IP_TYPE_ENUM_END
|
||||
} SpiceTunnelIpType;
|
||||
|
||||
typedef enum SpiceVscMessageType {
|
||||
SPICE_VSC_MESSAGE_TYPE_Init = 1,
|
||||
SPICE_VSC_MESSAGE_TYPE_Error,
|
||||
SPICE_VSC_MESSAGE_TYPE_ReaderAdd,
|
||||
SPICE_VSC_MESSAGE_TYPE_ReaderRemove,
|
||||
SPICE_VSC_MESSAGE_TYPE_ATR,
|
||||
SPICE_VSC_MESSAGE_TYPE_CardRemove,
|
||||
SPICE_VSC_MESSAGE_TYPE_APDU,
|
||||
SPICE_VSC_MESSAGE_TYPE_Flush,
|
||||
SPICE_VSC_MESSAGE_TYPE_FlushComplete,
|
||||
|
||||
SPICE_VSC_MESSAGE_TYPE_ENUM_END
|
||||
} SpiceVscMessageType;
|
||||
|
||||
enum {
|
||||
SPICE_CHANNEL_MAIN = 1,
|
||||
SPICE_CHANNEL_DISPLAY,
|
||||
SPICE_CHANNEL_INPUTS,
|
||||
SPICE_CHANNEL_CURSOR,
|
||||
SPICE_CHANNEL_PLAYBACK,
|
||||
SPICE_CHANNEL_RECORD,
|
||||
SPICE_CHANNEL_TUNNEL,
|
||||
SPICE_CHANNEL_SMARTCARD,
|
||||
SPICE_CHANNEL_USBREDIR,
|
||||
SPICE_CHANNEL_PORT,
|
||||
SPICE_CHANNEL_WEBDAV,
|
||||
|
||||
SPICE_END_CHANNEL
|
||||
};
|
||||
|
||||
enum {
|
||||
SPICE_MSG_MIGRATE = 1,
|
||||
SPICE_MSG_MIGRATE_DATA,
|
||||
SPICE_MSG_SET_ACK,
|
||||
SPICE_MSG_PING,
|
||||
SPICE_MSG_WAIT_FOR_CHANNELS,
|
||||
SPICE_MSG_DISCONNECTING,
|
||||
SPICE_MSG_NOTIFY,
|
||||
SPICE_MSG_LIST,
|
||||
SPICE_MSG_BASE_LAST = 100,
|
||||
};
|
||||
|
||||
enum {
|
||||
SPICE_MSGC_ACK_SYNC = 1,
|
||||
SPICE_MSGC_ACK,
|
||||
SPICE_MSGC_PONG,
|
||||
SPICE_MSGC_MIGRATE_FLUSH_MARK,
|
||||
SPICE_MSGC_MIGRATE_DATA,
|
||||
SPICE_MSGC_DISCONNECTING,
|
||||
};
|
||||
|
||||
enum {
|
||||
SPICE_MSG_MAIN_MIGRATE_BEGIN = 101,
|
||||
SPICE_MSG_MAIN_MIGRATE_CANCEL,
|
||||
SPICE_MSG_MAIN_INIT,
|
||||
SPICE_MSG_MAIN_CHANNELS_LIST,
|
||||
SPICE_MSG_MAIN_MOUSE_MODE,
|
||||
SPICE_MSG_MAIN_MULTI_MEDIA_TIME,
|
||||
SPICE_MSG_MAIN_AGENT_CONNECTED,
|
||||
SPICE_MSG_MAIN_AGENT_DISCONNECTED,
|
||||
SPICE_MSG_MAIN_AGENT_DATA,
|
||||
SPICE_MSG_MAIN_AGENT_TOKEN,
|
||||
SPICE_MSG_MAIN_MIGRATE_SWITCH_HOST,
|
||||
SPICE_MSG_MAIN_MIGRATE_END,
|
||||
SPICE_MSG_MAIN_NAME,
|
||||
SPICE_MSG_MAIN_UUID,
|
||||
SPICE_MSG_MAIN_AGENT_CONNECTED_TOKENS,
|
||||
SPICE_MSG_MAIN_MIGRATE_BEGIN_SEAMLESS,
|
||||
SPICE_MSG_MAIN_MIGRATE_DST_SEAMLESS_ACK,
|
||||
SPICE_MSG_MAIN_MIGRATE_DST_SEAMLESS_NACK,
|
||||
|
||||
SPICE_MSG_END_MAIN
|
||||
};
|
||||
|
||||
enum {
|
||||
SPICE_MSGC_MAIN_CLIENT_INFO = 101,
|
||||
SPICE_MSGC_MAIN_MIGRATE_CONNECTED,
|
||||
SPICE_MSGC_MAIN_MIGRATE_CONNECT_ERROR,
|
||||
SPICE_MSGC_MAIN_ATTACH_CHANNELS,
|
||||
SPICE_MSGC_MAIN_MOUSE_MODE_REQUEST,
|
||||
SPICE_MSGC_MAIN_AGENT_START,
|
||||
SPICE_MSGC_MAIN_AGENT_DATA,
|
||||
SPICE_MSGC_MAIN_AGENT_TOKEN,
|
||||
SPICE_MSGC_MAIN_MIGRATE_END,
|
||||
SPICE_MSGC_MAIN_MIGRATE_DST_DO_SEAMLESS,
|
||||
SPICE_MSGC_MAIN_MIGRATE_CONNECTED_SEAMLESS,
|
||||
|
||||
SPICE_MSGC_END_MAIN
|
||||
};
|
||||
|
||||
enum {
|
||||
SPICE_MSG_DISPLAY_MODE = 101,
|
||||
SPICE_MSG_DISPLAY_MARK,
|
||||
SPICE_MSG_DISPLAY_RESET,
|
||||
SPICE_MSG_DISPLAY_COPY_BITS,
|
||||
SPICE_MSG_DISPLAY_INVAL_LIST,
|
||||
SPICE_MSG_DISPLAY_INVAL_ALL_PIXMAPS,
|
||||
SPICE_MSG_DISPLAY_INVAL_PALETTE,
|
||||
SPICE_MSG_DISPLAY_INVAL_ALL_PALETTES,
|
||||
SPICE_MSG_DISPLAY_STREAM_CREATE = 122,
|
||||
SPICE_MSG_DISPLAY_STREAM_DATA,
|
||||
SPICE_MSG_DISPLAY_STREAM_CLIP,
|
||||
SPICE_MSG_DISPLAY_STREAM_DESTROY,
|
||||
SPICE_MSG_DISPLAY_STREAM_DESTROY_ALL,
|
||||
SPICE_MSG_DISPLAY_DRAW_FILL = 302,
|
||||
SPICE_MSG_DISPLAY_DRAW_OPAQUE,
|
||||
SPICE_MSG_DISPLAY_DRAW_COPY,
|
||||
SPICE_MSG_DISPLAY_DRAW_BLEND,
|
||||
SPICE_MSG_DISPLAY_DRAW_BLACKNESS,
|
||||
SPICE_MSG_DISPLAY_DRAW_WHITENESS,
|
||||
SPICE_MSG_DISPLAY_DRAW_INVERS,
|
||||
SPICE_MSG_DISPLAY_DRAW_ROP3,
|
||||
SPICE_MSG_DISPLAY_DRAW_STROKE,
|
||||
SPICE_MSG_DISPLAY_DRAW_TEXT,
|
||||
SPICE_MSG_DISPLAY_DRAW_TRANSPARENT,
|
||||
SPICE_MSG_DISPLAY_DRAW_ALPHA_BLEND,
|
||||
SPICE_MSG_DISPLAY_SURFACE_CREATE,
|
||||
SPICE_MSG_DISPLAY_SURFACE_DESTROY,
|
||||
SPICE_MSG_DISPLAY_STREAM_DATA_SIZED,
|
||||
SPICE_MSG_DISPLAY_MONITORS_CONFIG,
|
||||
SPICE_MSG_DISPLAY_DRAW_COMPOSITE,
|
||||
SPICE_MSG_DISPLAY_STREAM_ACTIVATE_REPORT,
|
||||
SPICE_MSG_DISPLAY_GL_SCANOUT_UNIX,
|
||||
SPICE_MSG_DISPLAY_GL_DRAW,
|
||||
|
||||
SPICE_MSG_END_DISPLAY
|
||||
};
|
||||
|
||||
enum {
|
||||
SPICE_MSGC_DISPLAY_INIT = 101,
|
||||
SPICE_MSGC_DISPLAY_STREAM_REPORT,
|
||||
SPICE_MSGC_DISPLAY_PREFERRED_COMPRESSION,
|
||||
SPICE_MSGC_DISPLAY_GL_DRAW_DONE,
|
||||
SPICE_MSGC_DISPLAY_PREFERRED_VIDEO_CODEC_TYPE,
|
||||
|
||||
SPICE_MSGC_END_DISPLAY
|
||||
};
|
||||
|
||||
enum {
|
||||
SPICE_MSG_INPUTS_INIT = 101,
|
||||
SPICE_MSG_INPUTS_KEY_MODIFIERS,
|
||||
SPICE_MSG_INPUTS_MOUSE_MOTION_ACK = 111,
|
||||
|
||||
SPICE_MSG_END_INPUTS
|
||||
};
|
||||
|
||||
enum {
|
||||
SPICE_MSGC_INPUTS_KEY_DOWN = 101,
|
||||
SPICE_MSGC_INPUTS_KEY_UP,
|
||||
SPICE_MSGC_INPUTS_KEY_MODIFIERS,
|
||||
SPICE_MSGC_INPUTS_KEY_SCANCODE,
|
||||
SPICE_MSGC_INPUTS_MOUSE_MOTION = 111,
|
||||
SPICE_MSGC_INPUTS_MOUSE_POSITION,
|
||||
SPICE_MSGC_INPUTS_MOUSE_PRESS,
|
||||
SPICE_MSGC_INPUTS_MOUSE_RELEASE,
|
||||
|
||||
SPICE_MSGC_END_INPUTS
|
||||
};
|
||||
|
||||
enum {
|
||||
SPICE_MSG_CURSOR_INIT = 101,
|
||||
SPICE_MSG_CURSOR_RESET,
|
||||
SPICE_MSG_CURSOR_SET,
|
||||
SPICE_MSG_CURSOR_MOVE,
|
||||
SPICE_MSG_CURSOR_HIDE,
|
||||
SPICE_MSG_CURSOR_TRAIL,
|
||||
SPICE_MSG_CURSOR_INVAL_ONE,
|
||||
SPICE_MSG_CURSOR_INVAL_ALL,
|
||||
|
||||
SPICE_MSG_END_CURSOR
|
||||
};
|
||||
|
||||
enum {
|
||||
SPICE_MSG_PLAYBACK_DATA = 101,
|
||||
SPICE_MSG_PLAYBACK_MODE,
|
||||
SPICE_MSG_PLAYBACK_START,
|
||||
SPICE_MSG_PLAYBACK_STOP,
|
||||
SPICE_MSG_PLAYBACK_VOLUME,
|
||||
SPICE_MSG_PLAYBACK_MUTE,
|
||||
SPICE_MSG_PLAYBACK_LATENCY,
|
||||
|
||||
SPICE_MSG_END_PLAYBACK
|
||||
};
|
||||
|
||||
enum {
|
||||
SPICE_MSG_RECORD_START = 101,
|
||||
SPICE_MSG_RECORD_STOP,
|
||||
SPICE_MSG_RECORD_VOLUME,
|
||||
SPICE_MSG_RECORD_MUTE,
|
||||
|
||||
SPICE_MSG_END_RECORD
|
||||
};
|
||||
|
||||
enum {
|
||||
SPICE_MSGC_RECORD_DATA = 101,
|
||||
SPICE_MSGC_RECORD_MODE,
|
||||
SPICE_MSGC_RECORD_START_MARK,
|
||||
|
||||
SPICE_MSGC_END_RECORD
|
||||
};
|
||||
|
||||
enum {
|
||||
SPICE_MSG_TUNNEL_INIT = 101,
|
||||
SPICE_MSG_TUNNEL_SERVICE_IP_MAP,
|
||||
SPICE_MSG_TUNNEL_SOCKET_OPEN,
|
||||
SPICE_MSG_TUNNEL_SOCKET_FIN,
|
||||
SPICE_MSG_TUNNEL_SOCKET_CLOSE,
|
||||
SPICE_MSG_TUNNEL_SOCKET_DATA,
|
||||
SPICE_MSG_TUNNEL_SOCKET_CLOSED_ACK,
|
||||
SPICE_MSG_TUNNEL_SOCKET_TOKEN,
|
||||
|
||||
SPICE_MSG_END_TUNNEL
|
||||
};
|
||||
|
||||
enum {
|
||||
SPICE_MSGC_TUNNEL_SERVICE_ADD = 101,
|
||||
SPICE_MSGC_TUNNEL_SERVICE_REMOVE,
|
||||
SPICE_MSGC_TUNNEL_SOCKET_OPEN_ACK,
|
||||
SPICE_MSGC_TUNNEL_SOCKET_OPEN_NACK,
|
||||
SPICE_MSGC_TUNNEL_SOCKET_FIN,
|
||||
SPICE_MSGC_TUNNEL_SOCKET_CLOSED,
|
||||
SPICE_MSGC_TUNNEL_SOCKET_CLOSED_ACK,
|
||||
SPICE_MSGC_TUNNEL_SOCKET_DATA,
|
||||
SPICE_MSGC_TUNNEL_SOCKET_TOKEN,
|
||||
|
||||
SPICE_MSGC_END_TUNNEL
|
||||
};
|
||||
|
||||
enum {
|
||||
SPICE_MSG_SMARTCARD_DATA = 101,
|
||||
|
||||
SPICE_MSG_END_SMARTCARD
|
||||
};
|
||||
|
||||
enum {
|
||||
SPICE_MSGC_SMARTCARD_DATA = 101,
|
||||
SPICE_MSGC_SMARTCARD_HEADER = 101,
|
||||
SPICE_MSGC_SMARTCARD_ERROR = 101,
|
||||
SPICE_MSGC_SMARTCARD_ATR = 101,
|
||||
SPICE_MSGC_SMARTCARD_READER_ADD = 101,
|
||||
|
||||
SPICE_MSGC_END_SMARTCARD
|
||||
};
|
||||
|
||||
enum {
|
||||
SPICE_MSG_SPICEVMC_DATA = 101,
|
||||
SPICE_MSG_SPICEVMC_COMPRESSED_DATA,
|
||||
|
||||
SPICE_MSG_END_SPICEVMC
|
||||
};
|
||||
|
||||
enum {
|
||||
SPICE_MSGC_SPICEVMC_DATA = 101,
|
||||
SPICE_MSGC_SPICEVMC_COMPRESSED_DATA,
|
||||
|
||||
SPICE_MSGC_END_SPICEVMC
|
||||
};
|
||||
|
||||
enum {
|
||||
SPICE_MSG_PORT_INIT = 201,
|
||||
SPICE_MSG_PORT_EVENT,
|
||||
|
||||
SPICE_MSG_END_PORT
|
||||
};
|
||||
|
||||
enum {
|
||||
SPICE_MSGC_PORT_EVENT = 201,
|
||||
|
||||
SPICE_MSGC_END_PORT
|
||||
};
|
||||
|
||||
#endif /* _H_SPICE_ENUMS */
|
@ -1,105 +0,0 @@
|
||||
/*
|
||||
Copyright (C) 2009 Red Hat, Inc.
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _H_FOREIGN_MENU_PROT
|
||||
#define _H_FOREIGN_MENU_PROT
|
||||
|
||||
#include <spice/macros.h>
|
||||
#include <spice/types.h>
|
||||
#include <spice/start-packed.h>
|
||||
|
||||
#define FOREIGN_MENU_MAGIC SPICE_MAGIC_CONST("FRGM")
|
||||
#define FOREIGN_MENU_VERSION 1
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED FrgMenuInitHeader {
|
||||
uint32_t magic;
|
||||
uint32_t version;
|
||||
uint32_t size;
|
||||
} FrgMenuInitHeader;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED FrgMenuInit {
|
||||
FrgMenuInitHeader base;
|
||||
uint64_t credentials;
|
||||
uint8_t title[0]; //UTF8
|
||||
} FrgMenuInit;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED FrgMenuMsg {
|
||||
uint32_t id;
|
||||
uint32_t size;
|
||||
} FrgMenuMsg;
|
||||
|
||||
enum {
|
||||
//external app -> spice client
|
||||
FOREIGN_MENU_SET_TITLE = 1,
|
||||
FOREIGN_MENU_ADD_ITEM,
|
||||
FOREIGN_MENU_MODIFY_ITEM,
|
||||
FOREIGN_MENU_REMOVE_ITEM,
|
||||
FOREIGN_MENU_CLEAR,
|
||||
|
||||
//spice client -> external app
|
||||
FOREIGN_MENU_ITEM_EVENT = 1001,
|
||||
FOREIGN_MENU_APP_ACTIVATED,
|
||||
FOREIGN_MENU_APP_DEACTIVATED,
|
||||
};
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED FrgMenuSetTitle {
|
||||
FrgMenuMsg base;
|
||||
uint8_t string[0]; //UTF8
|
||||
} FrgMenuSetTitle;
|
||||
|
||||
enum {
|
||||
FOREIGN_MENU_ITEM_TYPE_CHECKED = 1 << 0,
|
||||
FOREIGN_MENU_ITEM_TYPE_DIM = 1 << 1,
|
||||
FOREIGN_MENU_ITEM_TYPE_SEPARATOR = 1 << 2
|
||||
};
|
||||
|
||||
#define FOREIGN_MENU_INVALID_ID 0
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED FrgMenuAddItem {
|
||||
FrgMenuMsg base;
|
||||
uint32_t id;
|
||||
uint32_t type;
|
||||
uint32_t position;
|
||||
uint8_t string[0]; //UTF8
|
||||
} FrgMenuAddItem, FrgMenuModItem;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED FrgMenuRmItem {
|
||||
FrgMenuMsg base;
|
||||
uint32_t id;
|
||||
} FrgMenuRmItem;
|
||||
|
||||
typedef struct FrgMenuMsg FrgMenuRmItems;
|
||||
typedef struct FrgMenuMsg FrgMenuDelete;
|
||||
|
||||
enum {
|
||||
FOREIGN_MENU_EVENT_CLICK,
|
||||
FOREIGN_MENU_EVENT_CHECKED,
|
||||
FOREIGN_MENU_EVENT_UNCHECKED
|
||||
};
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED FrgMenuEvent {
|
||||
FrgMenuMsg base;
|
||||
uint32_t id;
|
||||
uint32_t action; //FOREIGN_MENU_EVENT_?
|
||||
} FrgMenuEvent;
|
||||
|
||||
typedef struct FrgMenuMsg FrgMenuActivate;
|
||||
typedef struct FrgMenuMsg FrgMenuDeactivate;
|
||||
|
||||
#include <spice/end-packed.h>
|
||||
|
||||
#endif
|
@ -1,136 +0,0 @@
|
||||
/*
|
||||
Copyright (C) 2009 Red Hat, Inc.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in
|
||||
the documentation and/or other materials provided with the
|
||||
distribution.
|
||||
* Neither the name of the copyright holder nor the names of its
|
||||
contributors may be used to endorse or promote products derived
|
||||
from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS
|
||||
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _H_SPICE_RING
|
||||
#define _H_SPICE_RING
|
||||
|
||||
#include <spice/types.h>
|
||||
|
||||
#define _SPICE_MSB_MASK4(x) \
|
||||
(((x) & 0x8) ? 0x8 : \
|
||||
((x) & 0x4) ? 0x4 : \
|
||||
((x) & 0x2) ? 0x2 : \
|
||||
((x) & 0x1) ? 0x1 : 0)
|
||||
|
||||
#define _SPICE_MSB_MASK8(x) \
|
||||
(((x) & 0xf0) ? _SPICE_MSB_MASK4((x) >> 4) << 4 : _SPICE_MSB_MASK4(x))
|
||||
|
||||
#define _SPICE_MSB_MASK16(x) \
|
||||
(((x) & 0xff00) ? _SPICE_MSB_MASK8((x) >> 8) << 8 : _SPICE_MSB_MASK8(x))
|
||||
|
||||
#define _SPICE_MSB_MASK(x) \
|
||||
(((x) & 0xffff0000) ? _SPICE_MSB_MASK16((x) >> 16) << 16 : _SPICE_MSB_MASK16(x))
|
||||
|
||||
#define _SPICE_POWER2_ALIGN(x) _SPICE_MSB_MASK((x) * 2 - 1)
|
||||
|
||||
|
||||
#define _SPICE_TOSHIFT_4(x) \
|
||||
(((x) & 0x8) ? 3 : \
|
||||
((x) & 0x4) ? 2 : \
|
||||
((x) & 0x2) ? 1 : 0)
|
||||
|
||||
#define _SPICE_TOSHIFT_8(x) \
|
||||
(((x) & 0xf0) ? _SPICE_TOSHIFT_4((x) >> 4) + 4 : _SPICE_TOSHIFT_4(x))
|
||||
|
||||
#define _SPICE_TOSHIFT_16(x) \
|
||||
(((x) & 0xff00) ? _SPICE_TOSHIFT_8((x) >> 8) + 8 : _SPICE_TOSHIFT_8(x))
|
||||
|
||||
#define _SPICE_POWER2_TO_SHIFT(x) \
|
||||
(((x) & 0xffff0000) ? _SPICE_TOSHIFT_16((x) >> 16) + 16 : _SPICE_TOSHIFT_16(x))
|
||||
|
||||
|
||||
|
||||
#define SPICE_RING_DECLARE(name, el_type, size) \
|
||||
typedef struct SPICE_ATTR_PACKED name##_ring_el { \
|
||||
union { \
|
||||
el_type el; \
|
||||
uint8_t data[_SPICE_POWER2_ALIGN(sizeof(el_type))]; \
|
||||
} ; \
|
||||
} name##_ring_el; \
|
||||
\
|
||||
typedef struct SPICE_ATTR_PACKED name { \
|
||||
uint32_t num_items; \
|
||||
uint32_t prod; \
|
||||
uint32_t notify_on_prod; \
|
||||
uint32_t cons; \
|
||||
uint32_t notify_on_cons; \
|
||||
name##_ring_el items[_SPICE_POWER2_ALIGN(size)]; \
|
||||
} name;
|
||||
|
||||
|
||||
#define SPICE_RING_INIT(r) \
|
||||
(r)->num_items = sizeof((r)->items) >> \
|
||||
_SPICE_POWER2_TO_SHIFT(sizeof((r)->items[0])); \
|
||||
(r)->prod = (r)->cons = 0; \
|
||||
(r)->notify_on_prod = 1; \
|
||||
(r)->notify_on_cons = 0;
|
||||
|
||||
|
||||
#define SPICE_RING_INDEX_MASK(r) ((r)->num_items - 1)
|
||||
|
||||
#define SPICE_RING_IS_PACKED(r) (sizeof((r)->items[0]) == sizeof((r)->items[0]).el)
|
||||
|
||||
#define SPICE_RING_IS_EMPTY(r) ((r)->cons == (r)->prod)
|
||||
|
||||
#define SPICE_RING_IS_FULL(r) (((r)->prod - (r)->cons) == (r)->num_items)
|
||||
|
||||
#define SPICE_RING_PROD_ITEM(r) (&(r)->items[(r)->prod & SPICE_RING_INDEX_MASK(r)].el)
|
||||
|
||||
#define SPICE_RING_PROD_WAIT(r, wait) \
|
||||
if (((wait) = SPICE_RING_IS_FULL(r))) { \
|
||||
(r)->notify_on_cons = (r)->cons + 1; \
|
||||
spice_mb(); \
|
||||
(wait) = SPICE_RING_IS_FULL(r); \
|
||||
}
|
||||
|
||||
#define SPICE_RING_PUSH(r, notify) \
|
||||
(r)->prod++; \
|
||||
spice_mb(); \
|
||||
(notify) = (r)->prod == (r)->notify_on_prod;
|
||||
|
||||
|
||||
#define SPICE_RING_CONS_ITEM(r) (&(r)->items[(r)->cons & SPICE_RING_INDEX_MASK(r)].el)
|
||||
|
||||
#define SPICE_RING_CONS_WAIT(r, wait) \
|
||||
if (((wait) = SPICE_RING_IS_EMPTY(r))) { \
|
||||
(r)->notify_on_prod = (r)->prod + 1; \
|
||||
spice_mb(); \
|
||||
(wait) = SPICE_RING_IS_EMPTY(r); \
|
||||
}
|
||||
|
||||
#define SPICE_RING_POP(r, notify) \
|
||||
(r)->cons++; \
|
||||
spice_mb(); \
|
||||
(notify) = (r)->cons == (r)->notify_on_cons;
|
||||
|
||||
|
||||
|
||||
#endif /* _H_SPICE_RING */
|
@ -1,331 +0,0 @@
|
||||
/* -*- Mode: C; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
||||
/*
|
||||
Copyright (C) 2010 Red Hat, Inc.
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* This file is to a large extent based on gmacros.h from glib
|
||||
* Which is LGPL and copyright:
|
||||
*
|
||||
* Modified by the GLib Team and others 1997-2000. See the AUTHORS
|
||||
* file for a list of people on the GLib Team. See the ChangeLog
|
||||
* files for a list of changes. These files are distributed with
|
||||
* GLib at ftp://ftp.gtk.org/pub/gtk/.
|
||||
*/
|
||||
|
||||
#ifndef _H_SPICE_MACROS
|
||||
#define _H_SPICE_MACROS
|
||||
|
||||
/* We include stddef.h to get the system's definition of NULL */
|
||||
#include <stddef.h>
|
||||
|
||||
#include <spice/types.h>
|
||||
|
||||
#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
|
||||
#define SPICE_GNUC_PURE __attribute__((__pure__))
|
||||
#define SPICE_GNUC_MALLOC __attribute__((__malloc__))
|
||||
#else
|
||||
#define SPICE_GNUC_PURE
|
||||
#define SPICE_GNUC_MALLOC
|
||||
#endif
|
||||
|
||||
#if __GNUC__ >= 4
|
||||
#define SPICE_GNUC_NULL_TERMINATED __attribute__((__sentinel__))
|
||||
#else
|
||||
#define SPICE_GNUC_NULL_TERMINATED
|
||||
#endif
|
||||
|
||||
#ifndef __has_feature
|
||||
#define __has_feature(x) 0 /* Compatibility with non-clang compilers. */
|
||||
#endif
|
||||
|
||||
#if (!defined(__clang__) && ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))) || \
|
||||
(defined(__clang__) && __has_feature(__alloc_size__))
|
||||
#define SPICE_GNUC_ALLOC_SIZE(x) __attribute__((__alloc_size__(x)))
|
||||
#define SPICE_GNUC_ALLOC_SIZE2(x,y) __attribute__((__alloc_size__(x,y)))
|
||||
#else
|
||||
#define SPICE_GNUC_ALLOC_SIZE(x)
|
||||
#define SPICE_GNUC_ALLOC_SIZE2(x,y)
|
||||
#endif
|
||||
|
||||
#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)
|
||||
#define SPICE_GNUC_PRINTF( format_idx, arg_idx ) __attribute__((__format__ (__printf__, format_idx, arg_idx)))
|
||||
#define SPICE_GNUC_SCANF( format_idx, arg_idx ) __attribute__((__format__ (__scanf__, format_idx, arg_idx)))
|
||||
#define SPICE_GNUC_FORMAT( arg_idx ) __attribute__((__format_arg__ (arg_idx)))
|
||||
#define SPICE_GNUC_NORETURN __attribute__((__noreturn__))
|
||||
#define SPICE_GNUC_CONST __attribute__((__const__))
|
||||
#define SPICE_GNUC_UNUSED __attribute__((__unused__))
|
||||
#define SPICE_GNUC_NO_INSTRUMENT __attribute__((__no_instrument_function__))
|
||||
#else /* !__GNUC__ */
|
||||
#define SPICE_GNUC_PRINTF( format_idx, arg_idx )
|
||||
#define SPICE_GNUC_SCANF( format_idx, arg_idx )
|
||||
#define SPICE_GNUC_FORMAT( arg_idx )
|
||||
#define SPICE_GNUC_NORETURN
|
||||
#define SPICE_GNUC_CONST
|
||||
#define SPICE_GNUC_UNUSED
|
||||
#define SPICE_GNUC_NO_INSTRUMENT
|
||||
#endif /* !__GNUC__ */
|
||||
|
||||
#ifdef G_DEPRECATED
|
||||
#define SPICE_GNUC_DEPRECATED G_DEPRECATED
|
||||
#elif __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)
|
||||
#define SPICE_GNUC_DEPRECATED __attribute__((__deprecated__))
|
||||
#elif defined(_MSC_VER) && (_MSC_VER >= 1300)
|
||||
#define SPICE_GNUC_DEPRECATED __declspec(deprecated)
|
||||
#else
|
||||
#define SPICE_GNUC_DEPRECATED
|
||||
#endif
|
||||
|
||||
#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)
|
||||
# define SPICE_GNUC_MAY_ALIAS __attribute__((may_alias))
|
||||
#else
|
||||
# define SPICE_GNUC_MAY_ALIAS
|
||||
#endif
|
||||
|
||||
#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
|
||||
#define SPICE_GNUC_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
|
||||
#else
|
||||
#define SPICE_GNUC_WARN_UNUSED_RESULT
|
||||
#endif /* __GNUC__ */
|
||||
|
||||
|
||||
/* Guard C code in headers, while including them from C++ */
|
||||
#ifdef __cplusplus
|
||||
# define SPICE_BEGIN_DECLS extern "C" {
|
||||
# define SPICE_END_DECLS }
|
||||
#else
|
||||
# define SPICE_BEGIN_DECLS
|
||||
# define SPICE_END_DECLS
|
||||
#endif
|
||||
|
||||
#ifndef FALSE
|
||||
#define FALSE (0)
|
||||
#endif
|
||||
|
||||
#ifndef TRUE
|
||||
#define TRUE (!FALSE)
|
||||
#endif
|
||||
|
||||
#undef MAX
|
||||
#define MAX(a, b) (((a) > (b)) ? (a) : (b))
|
||||
|
||||
#undef MIN
|
||||
#define MIN(a, b) (((a) < (b)) ? (a) : (b))
|
||||
|
||||
#undef ABS
|
||||
#define ABS(a) (((a) < 0) ? -(a) : (a))
|
||||
|
||||
/* Count the number of elements in an array. The array must be defined
|
||||
* as such; using this with a dynamically allocated array will give
|
||||
* incorrect results.
|
||||
*/
|
||||
#define SPICE_N_ELEMENTS(arr) (sizeof (arr) / sizeof ((arr)[0]))
|
||||
|
||||
#define SPICE_ALIGN(a, size) (((a) + ((size) - 1)) & ~((size) - 1))
|
||||
|
||||
/* Provide convenience macros for handling structure
|
||||
* fields through their offsets.
|
||||
*/
|
||||
|
||||
#if defined(__GNUC__) && __GNUC__ >= 4
|
||||
# define SPICE_OFFSETOF(struct_type, member) \
|
||||
((long) offsetof (struct_type, member))
|
||||
#else
|
||||
# define SPICE_OFFSETOF(struct_type, member) \
|
||||
((long) ((uint8_t*) &((struct_type*) 0)->member))
|
||||
#endif
|
||||
|
||||
/* The SPICE_USE_SAFER_CONTAINEROF macro is used to avoid
|
||||
* compilation breakage with older spice-server releases which
|
||||
* triggered some errors without an additional patch.
|
||||
*/
|
||||
#if defined(__GNUC__) && defined(SPICE_USE_SAFER_CONTAINEROF) && \
|
||||
(__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
|
||||
#define SPICE_CONTAINEROF(ptr, struct_type, member) ({ \
|
||||
const typeof( ((struct_type *)0)->member ) *__mptr = (ptr); \
|
||||
((struct_type *)(void *)((uint8_t *)(__mptr) - SPICE_OFFSETOF(struct_type, member))); })
|
||||
#else
|
||||
#define SPICE_CONTAINEROF(ptr, struct_type, member) \
|
||||
((struct_type *)(void *)((uint8_t *)(ptr) - SPICE_OFFSETOF(struct_type, member)))
|
||||
#endif
|
||||
|
||||
#define SPICE_MEMBER_P(struct_p, struct_offset) \
|
||||
((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
|
||||
#define SPICE_MEMBER(member_type, struct_p, struct_offset) \
|
||||
(*(member_type*) SPICE_STRUCT_MEMBER_P ((struct_p), (struct_offset)))
|
||||
|
||||
/* Provide simple macro statement wrappers:
|
||||
* SPICE_STMT_START { statements; } SPICE_STMT_END;
|
||||
* This can be used as a single statement, like:
|
||||
* if (x) SPICE_STMT_START { ... } SPICE_STMT_END; else ...
|
||||
* This intentionally does not use compiler extensions like GCC's '({...})' to
|
||||
* avoid portability issue or side effects when compiled with different compilers.
|
||||
*/
|
||||
#if !(defined (SPICE_STMT_START) && defined (SPICE_STMT_END))
|
||||
# define SPICE_STMT_START do
|
||||
# define SPICE_STMT_END while (0)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* The SPICE_LIKELY and SPICE_UNLIKELY macros let the programmer give hints to
|
||||
* the compiler about the expected result of an expression. Some compilers
|
||||
* can use this information for optimizations.
|
||||
*
|
||||
* The _SPICE_BOOLEAN_EXPR macro is intended to trigger a gcc warning when
|
||||
* putting assignments in g_return_if_fail ().
|
||||
*/
|
||||
#if defined(__GNUC__) && (__GNUC__ > 2) && defined(__OPTIMIZE__)
|
||||
#define _SPICE_BOOLEAN_EXPR(expr) \
|
||||
__extension__ ({ \
|
||||
int _g_boolean_var_; \
|
||||
if (expr) \
|
||||
_g_boolean_var_ = 1; \
|
||||
else \
|
||||
_g_boolean_var_ = 0; \
|
||||
_g_boolean_var_; \
|
||||
})
|
||||
#define SPICE_LIKELY(expr) (__builtin_expect (_SPICE_BOOLEAN_EXPR(expr), 1))
|
||||
#define SPICE_UNLIKELY(expr) (__builtin_expect (_SPICE_BOOLEAN_EXPR(expr), 0))
|
||||
#else
|
||||
#define SPICE_LIKELY(expr) (expr)
|
||||
#define SPICE_UNLIKELY(expr) (expr)
|
||||
#endif
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#define SPICE_UINT64_CONSTANT(x) (x ## UI64)
|
||||
#define SPICE_INT64_CONSTANT(x) (x ## I64)
|
||||
#else
|
||||
#if LONG_MAX == 2147483647L
|
||||
#define SPICE_UINT64_CONSTANT(x) (x ## ULL)
|
||||
#define SPICE_INT64_CONSTANT(x) (x ## LL)
|
||||
#else
|
||||
#define SPICE_UINT64_CONSTANT(x) (x ## UL)
|
||||
#define SPICE_INT64_CONSTANT(x) (x ## L)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* Little/Bit endian byte swapping */
|
||||
|
||||
#define SPICE_BYTESWAP16_CONSTANT(val) ((uint16_t) ( \
|
||||
(uint16_t) ((uint16_t) (val) >> 8) | \
|
||||
(uint16_t) ((uint16_t) (val) << 8)))
|
||||
|
||||
#define SPICE_BYTESWAP32_CONSTANT(val) ((uint32_t) ( \
|
||||
(((uint32_t) (val) & (uint32_t) 0x000000ffU) << 24) | \
|
||||
(((uint32_t) (val) & (uint32_t) 0x0000ff00U) << 8) | \
|
||||
(((uint32_t) (val) & (uint32_t) 0x00ff0000U) >> 8) | \
|
||||
(((uint32_t) (val) & (uint32_t) 0xff000000U) >> 24)))
|
||||
|
||||
#define SPICE_BYTESWAP64_CONSTANT(val) ((uint64_t) ( \
|
||||
(((uint64_t) (val) & \
|
||||
(uint64_t) SPICE_UINT64_CONSTANT(0x00000000000000ff)) << 56) | \
|
||||
(((uint64_t) (val) & \
|
||||
(uint64_t) SPICE_UINT64_CONSTANT(0x000000000000ff00)) << 40) | \
|
||||
(((uint64_t) (val) & \
|
||||
(uint64_t) SPICE_UINT64_CONSTANT(0x0000000000ff0000)) << 24) | \
|
||||
(((uint64_t) (val) & \
|
||||
(uint64_t) SPICE_UINT64_CONSTANT(0x00000000ff000000)) << 8) | \
|
||||
(((uint64_t) (val) & \
|
||||
(uint64_t) SPICE_UINT64_CONSTANT(0x000000ff00000000)) >> 8) | \
|
||||
(((uint64_t) (val) & \
|
||||
(uint64_t) SPICE_UINT64_CONSTANT(0x0000ff0000000000)) >> 24) | \
|
||||
(((uint64_t) (val) & \
|
||||
(uint64_t) SPICE_UINT64_CONSTANT(0x00ff000000000000)) >> 40) | \
|
||||
(((uint64_t) (val) & \
|
||||
(uint64_t) SPICE_UINT64_CONSTANT(0xff00000000000000)) >> 56)))
|
||||
|
||||
/* Arch specific stuff for speed
|
||||
*/
|
||||
#if defined (__GNUC__) && (__GNUC__ >= 4) && defined (__OPTIMIZE__)
|
||||
# define SPICE_BYTESWAP16(val) __builtin_bswap16(val)
|
||||
# define SPICE_BYTESWAP32(val) __builtin_bswap32(val)
|
||||
# define SPICE_BYTESWAP64(val) __builtin_bswap64(val)
|
||||
#elif defined(_MSC_VER)
|
||||
# define SPICE_BYTESWAP16(val) _byteswap_ushort(val)
|
||||
# define SPICE_BYTESWAP32(val) _byteswap_ulong(val)
|
||||
# define SPICE_BYTESWAP64(val) _byteswap_uint64(val)
|
||||
#else /* generic */
|
||||
# define SPICE_BYTESWAP16(val) (SPICE_BYTESWAP16_CONSTANT (val))
|
||||
# define SPICE_BYTESWAP32(val) (SPICE_BYTESWAP32_CONSTANT (val))
|
||||
# define SPICE_BYTESWAP64(val) (SPICE_BYTESWAP64_CONSTANT (val))
|
||||
#endif /* generic */
|
||||
|
||||
|
||||
/* detect endianness */
|
||||
#undef SPICE_ENDIAN
|
||||
#define SPICE_ENDIAN_LITTLE 4321
|
||||
#define SPICE_ENDIAN_BIG 1234
|
||||
#define SPICE_ENDIAN_PDP 2143
|
||||
|
||||
/* gcc already defined these, use them */
|
||||
#if defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) \
|
||||
&& defined(__ORDER_BIG_ENDIAN__) && defined(__ORDER_PDP_ENDIAN__)
|
||||
# if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
|
||||
# define SPICE_ENDIAN SPICE_ENDIAN_LITTLE
|
||||
# elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
|
||||
# define SPICE_ENDIAN SPICE_ENDIAN_BIG
|
||||
# elif __BYTE_ORDER__ == __ORDER_PDP_ENDIAN__
|
||||
# define SPICE_ENDIAN SPICE_ENDIAN_PDP
|
||||
# else
|
||||
# error __BYTE_ORDER__ not defined correctly
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* use suggestions at http://sourceforge.net/p/predef/wiki/Endianness/ */
|
||||
#ifndef SPICE_ENDIAN
|
||||
# if defined(__LITTLE_ENDIAN__) || defined(__ARMEL__) \
|
||||
|| defined(__THUMBEL__) || defined(__AARCH64EL__) \
|
||||
|| defined(_MIPSEL) || defined(__MIPSEL) || defined(__MIPSEL__) \
|
||||
|| defined(__amd64__) || defined(__x86_64__) || defined(__i386__) \
|
||||
|| defined(__e2k__)
|
||||
# define SPICE_ENDIAN SPICE_ENDIAN_LITTLE
|
||||
# endif
|
||||
# if defined(__BIG_ENDIAN__) || defined(__ARMEB__) \
|
||||
|| defined(__THUMBEB__) || defined(__AARCH64EB__) \
|
||||
|| defined(_MIPSEB) || defined(__MIPSEB) || defined(__MIPSEB__)
|
||||
# ifdef SPICE_ENDIAN
|
||||
# error Both little and big endian detected
|
||||
# endif
|
||||
# define SPICE_ENDIAN SPICE_ENDIAN_BIG
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* MS compiler */
|
||||
#if !defined(SPICE_ENDIAN) && defined(_MSC_VER)
|
||||
/* Windows support only little endian arm */
|
||||
# if defined(_M_IX86) || defined(_M_AMD64) || defined(_M_X64) \
|
||||
|| defined(_M_ARM)
|
||||
# define SPICE_ENDIAN SPICE_ENDIAN_LITTLE
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if !defined(SPICE_ENDIAN)
|
||||
#error Unable to detect processor endianness
|
||||
#endif
|
||||
|
||||
#if SPICE_ENDIAN == SPICE_ENDIAN_PDP
|
||||
#error PDP endianness not supported by Spice
|
||||
#endif
|
||||
|
||||
|
||||
#if SPICE_ENDIAN == SPICE_ENDIAN_LITTLE
|
||||
#define SPICE_MAGIC_CONST(s) \
|
||||
((uint32_t)((s[0]&0xffu)|((s[1]&0xffu)<<8)|((s[2]&0xffu)<<16)|((s[3]&0xffu)<<24)))
|
||||
#else
|
||||
#define SPICE_MAGIC_CONST(s) \
|
||||
((uint32_t)((s[3]&0xffu)|((s[2]&0xffu)<<8)|((s[1]&0xffu)<<16)|((s[0]&0xffu)<<24)))
|
||||
#endif
|
||||
|
||||
#endif /* _H_SPICE_MACROS */
|
@ -1,21 +0,0 @@
|
||||
spice_protocol_headers = [
|
||||
'barrier.h',
|
||||
'controller_prot.h',
|
||||
'end-packed.h',
|
||||
'enums.h',
|
||||
'foreign_menu_prot.h',
|
||||
'ipc_ring.h',
|
||||
'macros.h',
|
||||
'protocol.h',
|
||||
'qxl_dev.h',
|
||||
'qxl_windows.h',
|
||||
'start-packed.h',
|
||||
'stats.h',
|
||||
'types.h',
|
||||
'vd_agent.h',
|
||||
'vdi_dev.h',
|
||||
'stream-device.h',
|
||||
]
|
||||
|
||||
install_headers(spice_protocol_headers,
|
||||
subdir : join_paths('spice-1', 'spice'))
|
@ -1,171 +0,0 @@
|
||||
/*
|
||||
Copyright (C) 2009 Red Hat, Inc.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in
|
||||
the documentation and/or other materials provided with the
|
||||
distribution.
|
||||
* Neither the name of the copyright holder nor the names of its
|
||||
contributors may be used to endorse or promote products derived
|
||||
from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS
|
||||
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef _H_SPICE_PROTOCOL
|
||||
#define _H_SPICE_PROTOCOL
|
||||
|
||||
#include <spice/types.h>
|
||||
#include <spice/enums.h>
|
||||
#include <spice/macros.h>
|
||||
#include <spice/start-packed.h>
|
||||
|
||||
#define SPICE_MAGIC SPICE_MAGIC_CONST("REDQ")
|
||||
#define SPICE_VERSION_MAJOR 2
|
||||
#define SPICE_VERSION_MINOR 2
|
||||
|
||||
// Encryption & Ticketing Parameters
|
||||
#define SPICE_MAX_PASSWORD_LENGTH 60
|
||||
#define SPICE_TICKET_KEY_PAIR_LENGTH 1024
|
||||
#define SPICE_TICKET_PUBKEY_BYTES (SPICE_TICKET_KEY_PAIR_LENGTH / 8 + 34)
|
||||
|
||||
/*
|
||||
* This is the maximum number of streams possible.
|
||||
* IDs will be in the interval [0, SPICE_MAX_NUM_STREAMS).
|
||||
*/
|
||||
#define SPICE_MAX_NUM_STREAMS 64
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED SpiceLinkHeader {
|
||||
uint32_t magic;
|
||||
uint32_t major_version;
|
||||
uint32_t minor_version;
|
||||
uint32_t size;
|
||||
} SpiceLinkHeader;
|
||||
|
||||
enum {
|
||||
SPICE_COMMON_CAP_PROTOCOL_AUTH_SELECTION,
|
||||
SPICE_COMMON_CAP_AUTH_SPICE,
|
||||
SPICE_COMMON_CAP_AUTH_SASL,
|
||||
SPICE_COMMON_CAP_MINI_HEADER,
|
||||
};
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED SpiceLinkMess {
|
||||
uint32_t connection_id;
|
||||
uint8_t channel_type;
|
||||
uint8_t channel_id;
|
||||
uint32_t num_common_caps;
|
||||
uint32_t num_channel_caps;
|
||||
uint32_t caps_offset;
|
||||
} SpiceLinkMess;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED SpiceLinkReply {
|
||||
uint32_t error;
|
||||
uint8_t pub_key[SPICE_TICKET_PUBKEY_BYTES];
|
||||
uint32_t num_common_caps;
|
||||
uint32_t num_channel_caps;
|
||||
uint32_t caps_offset;
|
||||
} SpiceLinkReply;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED SpiceLinkEncryptedTicket {
|
||||
uint8_t encrypted_data[SPICE_TICKET_KEY_PAIR_LENGTH / 8];
|
||||
} SpiceLinkEncryptedTicket;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED SpiceLinkAuthMechanism {
|
||||
uint32_t auth_mechanism;
|
||||
} SpiceLinkAuthMechanism;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED SpiceDataHeader {
|
||||
uint64_t serial;
|
||||
uint16_t type;
|
||||
uint32_t size;
|
||||
uint32_t sub_list; //offset to SpiceSubMessageList[]
|
||||
} SpiceDataHeader;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED SpiceMiniDataHeader {
|
||||
uint16_t type;
|
||||
uint32_t size;
|
||||
} SpiceMiniDataHeader;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED SpiceSubMessage {
|
||||
uint16_t type;
|
||||
uint32_t size;
|
||||
} SpiceSubMessage;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED SpiceSubMessageList {
|
||||
uint16_t size;
|
||||
uint32_t sub_messages[0]; //offsets to SpicedSubMessage
|
||||
} SpiceSubMessageList;
|
||||
|
||||
#define SPICE_INPUT_MOTION_ACK_BUNCH 4
|
||||
|
||||
enum {
|
||||
SPICE_PLAYBACK_CAP_CELT_0_5_1,
|
||||
SPICE_PLAYBACK_CAP_VOLUME,
|
||||
SPICE_PLAYBACK_CAP_LATENCY,
|
||||
SPICE_PLAYBACK_CAP_OPUS,
|
||||
};
|
||||
|
||||
enum {
|
||||
SPICE_RECORD_CAP_CELT_0_5_1,
|
||||
SPICE_RECORD_CAP_VOLUME,
|
||||
SPICE_RECORD_CAP_OPUS,
|
||||
};
|
||||
|
||||
enum {
|
||||
SPICE_MAIN_CAP_SEMI_SEAMLESS_MIGRATE,
|
||||
SPICE_MAIN_CAP_NAME_AND_UUID,
|
||||
SPICE_MAIN_CAP_AGENT_CONNECTED_TOKENS,
|
||||
SPICE_MAIN_CAP_SEAMLESS_MIGRATE,
|
||||
};
|
||||
|
||||
enum {
|
||||
SPICE_DISPLAY_CAP_SIZED_STREAM,
|
||||
SPICE_DISPLAY_CAP_MONITORS_CONFIG,
|
||||
SPICE_DISPLAY_CAP_COMPOSITE,
|
||||
SPICE_DISPLAY_CAP_A8_SURFACE,
|
||||
SPICE_DISPLAY_CAP_STREAM_REPORT,
|
||||
SPICE_DISPLAY_CAP_LZ4_COMPRESSION,
|
||||
SPICE_DISPLAY_CAP_PREF_COMPRESSION,
|
||||
SPICE_DISPLAY_CAP_GL_SCANOUT,
|
||||
SPICE_DISPLAY_CAP_MULTI_CODEC,
|
||||
SPICE_DISPLAY_CAP_CODEC_MJPEG,
|
||||
SPICE_DISPLAY_CAP_CODEC_VP8,
|
||||
SPICE_DISPLAY_CAP_CODEC_H264,
|
||||
SPICE_DISPLAY_CAP_PREF_VIDEO_CODEC_TYPE,
|
||||
SPICE_DISPLAY_CAP_CODEC_VP9,
|
||||
SPICE_DISPLAY_CAP_CODEC_H265,
|
||||
};
|
||||
|
||||
enum {
|
||||
SPICE_INPUTS_CAP_KEY_SCANCODE,
|
||||
};
|
||||
|
||||
enum {
|
||||
SPICE_SPICEVMC_CAP_DATA_COMPRESS_LZ4,
|
||||
};
|
||||
|
||||
enum {
|
||||
SPICE_PORT_EVENT_OPENED,
|
||||
SPICE_PORT_EVENT_CLOSED,
|
||||
SPICE_PORT_EVENT_BREAK,
|
||||
};
|
||||
|
||||
#include <spice/end-packed.h>
|
||||
|
||||
#endif /* _H_SPICE_PROTOCOL */
|
@ -1,782 +0,0 @@
|
||||
/*
|
||||
Copyright (C) 2009 Red Hat, Inc.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in
|
||||
the documentation and/or other materials provided with the
|
||||
distribution.
|
||||
* Neither the name of the copyright holder nor the names of its
|
||||
contributors may be used to endorse or promote products derived
|
||||
from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS
|
||||
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _H_QXL_DEV
|
||||
#define _H_QXL_DEV
|
||||
|
||||
#include <spice/types.h>
|
||||
#include <spice/barrier.h>
|
||||
#include <spice/ipc_ring.h>
|
||||
#include <spice/enums.h>
|
||||
#include <spice/macros.h>
|
||||
|
||||
#include <spice/start-packed.h>
|
||||
|
||||
#define REDHAT_PCI_VENDOR_ID 0x1b36
|
||||
|
||||
/* 0x100-0x11f reserved for spice, 0x1ff used for unstable work */
|
||||
#define QXL_DEVICE_ID_STABLE 0x0100
|
||||
|
||||
enum {
|
||||
QXL_REVISION_STABLE_V04=0x01,
|
||||
QXL_REVISION_STABLE_V06=0x02,
|
||||
QXL_REVISION_STABLE_V10=0x03,
|
||||
QXL_REVISION_STABLE_V12=0x04,
|
||||
};
|
||||
|
||||
#define QXL_DEVICE_ID_DEVEL 0x01ff
|
||||
#define QXL_REVISION_DEVEL 0x01
|
||||
|
||||
#define QXL_ROM_MAGIC SPICE_MAGIC_CONST("QXRO")
|
||||
#define QXL_RAM_MAGIC SPICE_MAGIC_CONST("QXRA")
|
||||
|
||||
enum {
|
||||
QXL_RAM_RANGE_INDEX,
|
||||
QXL_VRAM_RANGE_INDEX,
|
||||
QXL_ROM_RANGE_INDEX,
|
||||
QXL_IO_RANGE_INDEX,
|
||||
|
||||
QXL_PCI_RANGES
|
||||
};
|
||||
|
||||
/* qxl-1 compat: append only */
|
||||
enum {
|
||||
QXL_IO_NOTIFY_CMD,
|
||||
QXL_IO_NOTIFY_CURSOR,
|
||||
QXL_IO_UPDATE_AREA,
|
||||
QXL_IO_UPDATE_IRQ,
|
||||
QXL_IO_NOTIFY_OOM,
|
||||
QXL_IO_RESET,
|
||||
QXL_IO_SET_MODE, /* qxl-1 */
|
||||
QXL_IO_LOG,
|
||||
/* appended for qxl-2 */
|
||||
QXL_IO_MEMSLOT_ADD,
|
||||
QXL_IO_MEMSLOT_DEL,
|
||||
QXL_IO_DETACH_PRIMARY,
|
||||
QXL_IO_ATTACH_PRIMARY,
|
||||
QXL_IO_CREATE_PRIMARY,
|
||||
QXL_IO_DESTROY_PRIMARY,
|
||||
QXL_IO_DESTROY_SURFACE_WAIT,
|
||||
QXL_IO_DESTROY_ALL_SURFACES,
|
||||
/* appended for qxl-3 */
|
||||
QXL_IO_UPDATE_AREA_ASYNC,
|
||||
QXL_IO_MEMSLOT_ADD_ASYNC,
|
||||
QXL_IO_CREATE_PRIMARY_ASYNC,
|
||||
QXL_IO_DESTROY_PRIMARY_ASYNC,
|
||||
QXL_IO_DESTROY_SURFACE_ASYNC,
|
||||
QXL_IO_DESTROY_ALL_SURFACES_ASYNC,
|
||||
QXL_IO_FLUSH_SURFACES_ASYNC,
|
||||
QXL_IO_FLUSH_RELEASE,
|
||||
/* appended for qxl-4 */
|
||||
QXL_IO_MONITORS_CONFIG_ASYNC,
|
||||
|
||||
QXL_IO_RANGE_SIZE
|
||||
};
|
||||
|
||||
typedef uint64_t QXLPHYSICAL;
|
||||
typedef int32_t QXLFIXED; //fixed 28.4
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLPointFix {
|
||||
QXLFIXED x;
|
||||
QXLFIXED y;
|
||||
} QXLPointFix;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLPoint {
|
||||
int32_t x;
|
||||
int32_t y;
|
||||
} QXLPoint;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLPoint16 {
|
||||
int16_t x;
|
||||
int16_t y;
|
||||
} QXLPoint16;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLRect {
|
||||
int32_t top;
|
||||
int32_t left;
|
||||
int32_t bottom;
|
||||
int32_t right;
|
||||
} QXLRect;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLURect {
|
||||
uint32_t top;
|
||||
uint32_t left;
|
||||
uint32_t bottom;
|
||||
uint32_t right;
|
||||
} QXLURect;
|
||||
|
||||
/* qxl-1 compat: append only */
|
||||
typedef struct SPICE_ATTR_PACKED QXLRom {
|
||||
uint32_t magic;
|
||||
uint32_t id;
|
||||
uint32_t update_id;
|
||||
uint32_t compression_level;
|
||||
uint32_t log_level;
|
||||
uint32_t mode; /* qxl-1 */
|
||||
uint32_t modes_offset;
|
||||
uint32_t num_pages;
|
||||
uint32_t pages_offset; /* qxl-1 */
|
||||
uint32_t draw_area_offset; /* qxl-1 */
|
||||
uint32_t surface0_area_size; /* qxl-1 name: draw_area_size */
|
||||
uint32_t ram_header_offset;
|
||||
uint32_t mm_clock;
|
||||
/* appended for qxl-2 */
|
||||
uint32_t n_surfaces;
|
||||
uint64_t flags;
|
||||
uint8_t slots_start;
|
||||
uint8_t slots_end;
|
||||
uint8_t slot_gen_bits;
|
||||
uint8_t slot_id_bits;
|
||||
uint8_t slot_generation;
|
||||
/* appended for qxl-4 */
|
||||
uint8_t client_present;
|
||||
uint8_t client_capabilities[58];
|
||||
uint32_t client_monitors_config_crc;
|
||||
struct {
|
||||
uint16_t count;
|
||||
uint16_t padding;
|
||||
QXLURect heads[64];
|
||||
} client_monitors_config;
|
||||
} QXLRom;
|
||||
|
||||
#define CLIENT_MONITORS_CONFIG_CRC32_POLY 0xedb88320
|
||||
|
||||
/* qxl-1 compat: fixed */
|
||||
typedef struct SPICE_ATTR_PACKED QXLMode {
|
||||
uint32_t id;
|
||||
uint32_t x_res;
|
||||
uint32_t y_res;
|
||||
uint32_t bits;
|
||||
uint32_t stride;
|
||||
uint32_t x_mili;
|
||||
uint32_t y_mili;
|
||||
uint32_t orientation;
|
||||
} QXLMode;
|
||||
|
||||
/* qxl-1 compat: fixed */
|
||||
typedef struct SPICE_ATTR_PACKED QXLModes {
|
||||
uint32_t n_modes;
|
||||
QXLMode modes[0];
|
||||
} QXLModes;
|
||||
|
||||
/* qxl-1 compat: append only */
|
||||
typedef enum QXLCmdType {
|
||||
QXL_CMD_NOP,
|
||||
QXL_CMD_DRAW,
|
||||
QXL_CMD_UPDATE,
|
||||
QXL_CMD_CURSOR,
|
||||
QXL_CMD_MESSAGE,
|
||||
QXL_CMD_SURFACE,
|
||||
} QXLCmdType;
|
||||
|
||||
/* qxl-1 compat: fixed */
|
||||
typedef struct SPICE_ATTR_PACKED QXLCommand {
|
||||
QXLPHYSICAL data;
|
||||
uint32_t type;
|
||||
uint32_t padding;
|
||||
} QXLCommand;
|
||||
|
||||
#define QXL_COMMAND_FLAG_COMPAT (1<<0)
|
||||
#define QXL_COMMAND_FLAG_COMPAT_16BPP (2<<0)
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLCommandExt {
|
||||
QXLCommand cmd;
|
||||
uint32_t group_id;
|
||||
uint32_t flags;
|
||||
} QXLCommandExt;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLMemSlot {
|
||||
uint64_t mem_start;
|
||||
uint64_t mem_end;
|
||||
} QXLMemSlot;
|
||||
|
||||
#define QXL_SURF_TYPE_PRIMARY 0
|
||||
|
||||
#define QXL_SURF_FLAG_KEEP_DATA (1 << 0)
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLSurfaceCreate {
|
||||
uint32_t width;
|
||||
uint32_t height;
|
||||
int32_t stride;
|
||||
uint32_t format;
|
||||
uint32_t position;
|
||||
uint32_t mouse_mode;
|
||||
uint32_t flags;
|
||||
uint32_t type;
|
||||
QXLPHYSICAL mem;
|
||||
} QXLSurfaceCreate;
|
||||
|
||||
#define QXL_COMMAND_RING_SIZE 32
|
||||
#define QXL_CURSOR_RING_SIZE 32
|
||||
#define QXL_RELEASE_RING_SIZE 8
|
||||
|
||||
SPICE_RING_DECLARE(QXLCommandRing, QXLCommand, QXL_COMMAND_RING_SIZE);
|
||||
SPICE_RING_DECLARE(QXLCursorRing, QXLCommand, QXL_CURSOR_RING_SIZE);
|
||||
|
||||
SPICE_RING_DECLARE(QXLReleaseRing, uint64_t, QXL_RELEASE_RING_SIZE);
|
||||
|
||||
#define QXL_LOG_BUF_SIZE 4096
|
||||
|
||||
#define QXL_INTERRUPT_DISPLAY (1 << 0)
|
||||
#define QXL_INTERRUPT_CURSOR (1 << 1)
|
||||
#define QXL_INTERRUPT_IO_CMD (1 << 2)
|
||||
#define QXL_INTERRUPT_ERROR (1 << 3)
|
||||
#define QXL_INTERRUPT_CLIENT (1 << 4)
|
||||
#define QXL_INTERRUPT_CLIENT_MONITORS_CONFIG (1 << 5)
|
||||
|
||||
/* qxl-1 compat: append only */
|
||||
typedef struct SPICE_ATTR_ALIGNED(4) SPICE_ATTR_PACKED QXLRam {
|
||||
uint32_t magic;
|
||||
uint32_t int_pending;
|
||||
uint32_t int_mask;
|
||||
uint8_t log_buf[QXL_LOG_BUF_SIZE];
|
||||
QXLCommandRing cmd_ring;
|
||||
QXLCursorRing cursor_ring;
|
||||
QXLReleaseRing release_ring;
|
||||
QXLRect update_area;
|
||||
/* appended for qxl-2 */
|
||||
uint32_t update_surface;
|
||||
QXLMemSlot mem_slot;
|
||||
QXLSurfaceCreate create_surface;
|
||||
uint64_t flags;
|
||||
|
||||
/* appended for qxl-4 */
|
||||
|
||||
/* used by QXL_IO_MONITORS_CONFIG_ASYNC */
|
||||
QXLPHYSICAL monitors_config;
|
||||
|
||||
} QXLRam;
|
||||
|
||||
typedef union QXLReleaseInfo {
|
||||
uint64_t id; // in
|
||||
uint64_t next; // out
|
||||
} QXLReleaseInfo;
|
||||
|
||||
typedef struct QXLReleaseInfoExt {
|
||||
QXLReleaseInfo *info;
|
||||
uint32_t group_id;
|
||||
} QXLReleaseInfoExt;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLDataChunk {
|
||||
uint32_t data_size;
|
||||
QXLPHYSICAL prev_chunk;
|
||||
QXLPHYSICAL next_chunk;
|
||||
uint8_t data[0];
|
||||
} QXLDataChunk;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLMessage {
|
||||
QXLReleaseInfo release_info;
|
||||
uint8_t data[0];
|
||||
} QXLMessage;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLCompatUpdateCmd {
|
||||
QXLReleaseInfo release_info;
|
||||
QXLRect area;
|
||||
uint32_t update_id;
|
||||
} QXLCompatUpdateCmd;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLUpdateCmd {
|
||||
QXLReleaseInfo release_info;
|
||||
QXLRect area;
|
||||
uint32_t update_id;
|
||||
uint32_t surface_id;
|
||||
} QXLUpdateCmd;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLCursorHeader {
|
||||
uint64_t unique;
|
||||
uint16_t type;
|
||||
uint16_t width;
|
||||
uint16_t height;
|
||||
uint16_t hot_spot_x;
|
||||
uint16_t hot_spot_y;
|
||||
} QXLCursorHeader;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLCursor {
|
||||
QXLCursorHeader header;
|
||||
uint32_t data_size;
|
||||
QXLDataChunk chunk;
|
||||
} QXLCursor;
|
||||
|
||||
enum {
|
||||
QXL_CURSOR_SET,
|
||||
QXL_CURSOR_MOVE,
|
||||
QXL_CURSOR_HIDE,
|
||||
QXL_CURSOR_TRAIL,
|
||||
};
|
||||
|
||||
#define QXL_CURSUR_DEVICE_DATA_SIZE 128
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLCursorCmd {
|
||||
QXLReleaseInfo release_info;
|
||||
uint8_t type;
|
||||
union {
|
||||
struct SPICE_ATTR_PACKED {
|
||||
QXLPoint16 position;
|
||||
uint8_t visible;
|
||||
QXLPHYSICAL shape;
|
||||
} set;
|
||||
struct SPICE_ATTR_PACKED {
|
||||
uint16_t length;
|
||||
uint16_t frequency;
|
||||
} trail;
|
||||
QXLPoint16 position;
|
||||
} u;
|
||||
uint8_t device_data[QXL_CURSUR_DEVICE_DATA_SIZE]; //todo: dynamic size from rom
|
||||
} QXLCursorCmd;
|
||||
|
||||
enum {
|
||||
QXL_DRAW_NOP,
|
||||
QXL_DRAW_FILL,
|
||||
QXL_DRAW_OPAQUE,
|
||||
QXL_DRAW_COPY,
|
||||
QXL_COPY_BITS,
|
||||
QXL_DRAW_BLEND,
|
||||
QXL_DRAW_BLACKNESS,
|
||||
QXL_DRAW_WHITENESS,
|
||||
QXL_DRAW_INVERS,
|
||||
QXL_DRAW_ROP3,
|
||||
QXL_DRAW_STROKE,
|
||||
QXL_DRAW_TEXT,
|
||||
QXL_DRAW_TRANSPARENT,
|
||||
QXL_DRAW_ALPHA_BLEND,
|
||||
QXL_DRAW_COMPOSITE
|
||||
};
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLRasterGlyph {
|
||||
QXLPoint render_pos;
|
||||
QXLPoint glyph_origin;
|
||||
uint16_t width;
|
||||
uint16_t height;
|
||||
uint8_t data[0];
|
||||
} QXLRasterGlyph;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLString {
|
||||
uint32_t data_size;
|
||||
uint16_t length;
|
||||
uint16_t flags;
|
||||
QXLDataChunk chunk;
|
||||
} QXLString;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLCopyBits {
|
||||
QXLPoint src_pos;
|
||||
} QXLCopyBits;
|
||||
|
||||
typedef enum QXLEffectType
|
||||
{
|
||||
QXL_EFFECT_BLEND = 0,
|
||||
QXL_EFFECT_OPAQUE = 1,
|
||||
QXL_EFFECT_REVERT_ON_DUP = 2,
|
||||
QXL_EFFECT_BLACKNESS_ON_DUP = 3,
|
||||
QXL_EFFECT_WHITENESS_ON_DUP = 4,
|
||||
QXL_EFFECT_NOP_ON_DUP = 5,
|
||||
QXL_EFFECT_NOP = 6,
|
||||
QXL_EFFECT_OPAQUE_BRUSH = 7
|
||||
} QXLEffectType;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLPattern {
|
||||
QXLPHYSICAL pat;
|
||||
QXLPoint pos;
|
||||
} QXLPattern;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLBrush {
|
||||
uint32_t type;
|
||||
union {
|
||||
uint32_t color;
|
||||
QXLPattern pattern;
|
||||
} u;
|
||||
} QXLBrush;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLQMask {
|
||||
uint8_t flags;
|
||||
QXLPoint pos;
|
||||
QXLPHYSICAL bitmap;
|
||||
} QXLQMask;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLFill {
|
||||
QXLBrush brush;
|
||||
uint16_t rop_descriptor;
|
||||
QXLQMask mask;
|
||||
} QXLFill;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLOpaque {
|
||||
QXLPHYSICAL src_bitmap;
|
||||
QXLRect src_area;
|
||||
QXLBrush brush;
|
||||
uint16_t rop_descriptor;
|
||||
uint8_t scale_mode;
|
||||
QXLQMask mask;
|
||||
} QXLOpaque;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLCopy {
|
||||
QXLPHYSICAL src_bitmap;
|
||||
QXLRect src_area;
|
||||
uint16_t rop_descriptor;
|
||||
uint8_t scale_mode;
|
||||
QXLQMask mask;
|
||||
} QXLCopy, QXLBlend;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLTransparent {
|
||||
QXLPHYSICAL src_bitmap;
|
||||
QXLRect src_area;
|
||||
uint32_t src_color;
|
||||
uint32_t true_color;
|
||||
} QXLTransparent;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLAlphaBlend {
|
||||
uint16_t alpha_flags;
|
||||
uint8_t alpha;
|
||||
QXLPHYSICAL src_bitmap;
|
||||
QXLRect src_area;
|
||||
} QXLAlphaBlend;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLCompatAlphaBlend {
|
||||
uint8_t alpha;
|
||||
QXLPHYSICAL src_bitmap;
|
||||
QXLRect src_area;
|
||||
} QXLCompatAlphaBlend;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLRop3 {
|
||||
QXLPHYSICAL src_bitmap;
|
||||
QXLRect src_area;
|
||||
QXLBrush brush;
|
||||
uint8_t rop3;
|
||||
uint8_t scale_mode;
|
||||
QXLQMask mask;
|
||||
} QXLRop3;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLLineAttr {
|
||||
uint8_t flags;
|
||||
uint8_t join_style;
|
||||
uint8_t end_style;
|
||||
uint8_t style_nseg;
|
||||
QXLFIXED width;
|
||||
QXLFIXED miter_limit;
|
||||
QXLPHYSICAL style;
|
||||
} QXLLineAttr;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLStroke {
|
||||
QXLPHYSICAL path;
|
||||
QXLLineAttr attr;
|
||||
QXLBrush brush;
|
||||
uint16_t fore_mode;
|
||||
uint16_t back_mode;
|
||||
} QXLStroke;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLText {
|
||||
QXLPHYSICAL str;
|
||||
QXLRect back_area;
|
||||
QXLBrush fore_brush;
|
||||
QXLBrush back_brush;
|
||||
uint16_t fore_mode;
|
||||
uint16_t back_mode;
|
||||
} QXLText;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLBlackness {
|
||||
QXLQMask mask;
|
||||
} QXLBlackness, QXLInvers, QXLWhiteness;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLClip {
|
||||
uint32_t type;
|
||||
QXLPHYSICAL data;
|
||||
} QXLClip;
|
||||
|
||||
typedef enum {
|
||||
QXL_OP_CLEAR = 0x00,
|
||||
QXL_OP_SOURCE = 0x01,
|
||||
QXL_OP_DST = 0x02,
|
||||
QXL_OP_OVER = 0x03,
|
||||
QXL_OP_OVER_REVERSE = 0x04,
|
||||
QXL_OP_IN = 0x05,
|
||||
QXL_OP_IN_REVERSE = 0x06,
|
||||
QXL_OP_OUT = 0x07,
|
||||
QXL_OP_OUT_REVERSE = 0x08,
|
||||
QXL_OP_ATOP = 0x09,
|
||||
QXL_OP_ATOP_REVERSE = 0x0a,
|
||||
QXL_OP_XOR = 0x0b,
|
||||
QXL_OP_ADD = 0x0c,
|
||||
QXL_OP_SATURATE = 0x0d,
|
||||
/* Note the jump here from 0x0d to 0x30 */
|
||||
QXL_OP_MULTIPLY = 0x30,
|
||||
QXL_OP_SCREEN = 0x31,
|
||||
QXL_OP_OVERLAY = 0x32,
|
||||
QXL_OP_DARKEN = 0x33,
|
||||
QXL_OP_LIGHTEN = 0x34,
|
||||
QXL_OP_COLOR_DODGE = 0x35,
|
||||
QXL_OP_COLOR_BURN = 0x36,
|
||||
QXL_OP_HARD_LIGHT = 0x37,
|
||||
QXL_OP_SOFT_LIGHT = 0x38,
|
||||
QXL_OP_DIFFERENCE = 0x39,
|
||||
QXL_OP_EXCLUSION = 0x3a,
|
||||
QXL_OP_HSL_HUE = 0x3b,
|
||||
QXL_OP_HSL_SATURATION = 0x3c,
|
||||
QXL_OP_HSL_COLOR = 0x3d,
|
||||
QXL_OP_HSL_LUMINOSITY = 0x3e
|
||||
} QXLOperator;
|
||||
|
||||
typedef struct {
|
||||
uint32_t t00;
|
||||
uint32_t t01;
|
||||
uint32_t t02;
|
||||
uint32_t t10;
|
||||
uint32_t t11;
|
||||
uint32_t t12;
|
||||
} QXLTransform;
|
||||
|
||||
/* The flags field has the following bit fields:
|
||||
*
|
||||
* operator: [ 0 - 7 ]
|
||||
* src_filter: [ 8 - 10 ]
|
||||
* mask_filter: [ 11 - 13 ]
|
||||
* src_repeat: [ 14 - 15 ]
|
||||
* mask_repeat: [ 16 - 17 ]
|
||||
* component_alpha: [ 18 - 18 ]
|
||||
* reserved: [ 19 - 31 ]
|
||||
*
|
||||
* The repeat and filter values are those of pixman:
|
||||
* REPEAT_NONE = 0
|
||||
* REPEAT_NORMAL = 1
|
||||
* REPEAT_PAD = 2
|
||||
* REPEAT_REFLECT = 3
|
||||
*
|
||||
* The filter values are:
|
||||
* FILTER_NEAREST = 0
|
||||
* FILTER_BILINEAR = 1
|
||||
*/
|
||||
typedef struct SPICE_ATTR_PACKED QXLComposite {
|
||||
uint32_t flags;
|
||||
|
||||
QXLPHYSICAL src;
|
||||
QXLPHYSICAL src_transform; /* May be NULL */
|
||||
QXLPHYSICAL mask; /* May be NULL */
|
||||
QXLPHYSICAL mask_transform; /* May be NULL */
|
||||
QXLPoint16 src_origin;
|
||||
QXLPoint16 mask_origin;
|
||||
} QXLComposite;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLCompatDrawable {
|
||||
QXLReleaseInfo release_info;
|
||||
uint8_t effect;
|
||||
uint8_t type;
|
||||
uint16_t bitmap_offset;
|
||||
QXLRect bitmap_area;
|
||||
QXLRect bbox;
|
||||
QXLClip clip;
|
||||
uint32_t mm_time;
|
||||
union {
|
||||
QXLFill fill;
|
||||
QXLOpaque opaque;
|
||||
QXLCopy copy;
|
||||
QXLTransparent transparent;
|
||||
QXLCompatAlphaBlend alpha_blend;
|
||||
QXLCopyBits copy_bits;
|
||||
QXLBlend blend;
|
||||
QXLRop3 rop3;
|
||||
QXLStroke stroke;
|
||||
QXLText text;
|
||||
QXLBlackness blackness;
|
||||
QXLInvers invers;
|
||||
QXLWhiteness whiteness;
|
||||
} u;
|
||||
} QXLCompatDrawable;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLDrawable {
|
||||
QXLReleaseInfo release_info;
|
||||
uint32_t surface_id;
|
||||
uint8_t effect;
|
||||
uint8_t type;
|
||||
uint8_t self_bitmap;
|
||||
QXLRect self_bitmap_area;
|
||||
QXLRect bbox;
|
||||
QXLClip clip;
|
||||
uint32_t mm_time;
|
||||
int32_t surfaces_dest[3];
|
||||
QXLRect surfaces_rects[3];
|
||||
union {
|
||||
QXLFill fill;
|
||||
QXLOpaque opaque;
|
||||
QXLCopy copy;
|
||||
QXLTransparent transparent;
|
||||
QXLAlphaBlend alpha_blend;
|
||||
QXLCopyBits copy_bits;
|
||||
QXLBlend blend;
|
||||
QXLRop3 rop3;
|
||||
QXLStroke stroke;
|
||||
QXLText text;
|
||||
QXLBlackness blackness;
|
||||
QXLInvers invers;
|
||||
QXLWhiteness whiteness;
|
||||
QXLComposite composite;
|
||||
} u;
|
||||
} QXLDrawable;
|
||||
|
||||
typedef enum QXLSurfaceCmdType {
|
||||
QXL_SURFACE_CMD_CREATE,
|
||||
QXL_SURFACE_CMD_DESTROY,
|
||||
} QXLSurfaceCmdType;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLSurface {
|
||||
uint32_t format;
|
||||
uint32_t width;
|
||||
uint32_t height;
|
||||
int32_t stride;
|
||||
QXLPHYSICAL data;
|
||||
} QXLSurface;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLSurfaceCmd {
|
||||
QXLReleaseInfo release_info;
|
||||
uint32_t surface_id;
|
||||
uint8_t type;
|
||||
uint32_t flags;
|
||||
union {
|
||||
QXLSurface surface_create;
|
||||
} u;
|
||||
} QXLSurfaceCmd;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLClipRects {
|
||||
uint32_t num_rects;
|
||||
QXLDataChunk chunk;
|
||||
} QXLClipRects;
|
||||
|
||||
enum {
|
||||
QXL_PATH_BEGIN = (1 << 0),
|
||||
QXL_PATH_END = (1 << 1),
|
||||
QXL_PATH_CLOSE = (1 << 3),
|
||||
QXL_PATH_BEZIER = (1 << 4),
|
||||
};
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLPathSeg {
|
||||
uint32_t flags;
|
||||
uint32_t count;
|
||||
QXLPointFix points[0];
|
||||
} QXLPathSeg;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLPath {
|
||||
uint32_t data_size;
|
||||
QXLDataChunk chunk;
|
||||
} QXLPath;
|
||||
|
||||
enum {
|
||||
QXL_IMAGE_GROUP_DRIVER,
|
||||
QXL_IMAGE_GROUP_DEVICE,
|
||||
QXL_IMAGE_GROUP_RED,
|
||||
QXL_IMAGE_GROUP_DRIVER_DONT_CACHE,
|
||||
};
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLImageID {
|
||||
uint32_t group;
|
||||
uint32_t unique;
|
||||
} QXLImageID;
|
||||
|
||||
typedef union {
|
||||
QXLImageID id;
|
||||
uint64_t value;
|
||||
} QXLImageIDUnion;
|
||||
|
||||
typedef enum QXLImageFlags {
|
||||
QXL_IMAGE_CACHE = (1 << 0),
|
||||
QXL_IMAGE_HIGH_BITS_SET = (1 << 1),
|
||||
} QXLImageFlags;
|
||||
|
||||
typedef enum QXLBitmapFlags {
|
||||
QXL_BITMAP_DIRECT = (1 << 0),
|
||||
QXL_BITMAP_UNSTABLE = (1 << 1),
|
||||
QXL_BITMAP_TOP_DOWN = (1 << 2), // == SPICE_BITMAP_FLAGS_TOP_DOWN
|
||||
} QXLBitmapFlags;
|
||||
|
||||
#define QXL_SET_IMAGE_ID(image, _group, _unique) { \
|
||||
(image)->descriptor.id = (((uint64_t)_unique) << 32) | _group; \
|
||||
}
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLImageDescriptor {
|
||||
uint64_t id;
|
||||
uint8_t type;
|
||||
uint8_t flags;
|
||||
uint32_t width;
|
||||
uint32_t height;
|
||||
} QXLImageDescriptor;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLPalette {
|
||||
uint64_t unique;
|
||||
uint16_t num_ents;
|
||||
uint32_t ents[0];
|
||||
} QXLPalette;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLBitmap {
|
||||
uint8_t format;
|
||||
uint8_t flags;
|
||||
uint32_t x;
|
||||
uint32_t y;
|
||||
uint32_t stride;
|
||||
QXLPHYSICAL palette;
|
||||
QXLPHYSICAL data; //data[0] ?
|
||||
} QXLBitmap;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLSurfaceId {
|
||||
uint32_t surface_id;
|
||||
} QXLSurfaceId;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLQUICData {
|
||||
uint32_t data_size;
|
||||
uint8_t data[0];
|
||||
} QXLQUICData, QXLLZRGBData, QXLJPEGData;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLImage {
|
||||
QXLImageDescriptor descriptor;
|
||||
union { // variable length
|
||||
QXLBitmap bitmap;
|
||||
QXLQUICData quic;
|
||||
QXLSurfaceId surface_image;
|
||||
};
|
||||
} QXLImage;
|
||||
|
||||
/* A QXLHead is a single monitor output backed by a QXLSurface.
|
||||
* x and y offsets are unsigned since they are used in relation to
|
||||
* the given surface, not the same as the x, y coordinates in the guest
|
||||
* screen reference frame. */
|
||||
typedef struct SPICE_ATTR_PACKED QXLHead {
|
||||
uint32_t id;
|
||||
uint32_t surface_id;
|
||||
uint32_t width;
|
||||
uint32_t height;
|
||||
uint32_t x;
|
||||
uint32_t y;
|
||||
uint32_t flags;
|
||||
} QXLHead;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLMonitorsConfig {
|
||||
uint16_t count;
|
||||
uint16_t max_allowed; /* If it is 0 no fixed limit is given by the driver */
|
||||
QXLHead heads[0];
|
||||
} QXLMonitorsConfig;
|
||||
|
||||
#include <spice/end-packed.h>
|
||||
|
||||
#endif /* _H_QXL_DEV */
|
@ -1,21 +0,0 @@
|
||||
#ifndef _H_QXL_WINDOWS
|
||||
#define _H_QXL_WINDOWS
|
||||
|
||||
#include <spice/types.h>
|
||||
|
||||
#include <spice/start-packed.h>
|
||||
|
||||
enum {
|
||||
QXL_ESCAPE_SET_CUSTOM_DISPLAY = 0x10001,
|
||||
QXL_ESCAPE_MONITOR_CONFIG
|
||||
};
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED QXLEscapeSetCustomDisplay {
|
||||
uint32_t xres;
|
||||
uint32_t yres;
|
||||
uint32_t bpp;
|
||||
} QXLEscapeSetCustomDisplay;
|
||||
|
||||
#include <spice/end-packed.h>
|
||||
|
||||
#endif /* _H_QXL_WINDOWS */
|
@ -1,66 +0,0 @@
|
||||
/* -*- Mode: C; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
||||
/*
|
||||
Copyright (C) 2009 Red Hat, Inc.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in
|
||||
the documentation and/or other materials provided with the
|
||||
distribution.
|
||||
* Neither the name of the copyright holder nor the names of its
|
||||
contributors may be used to endorse or promote products derived
|
||||
from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS
|
||||
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/* Ideally this should all have been macros in a common headers, but
|
||||
* its not possible to put pragmas into header files, so we have
|
||||
* to use include magic.
|
||||
*
|
||||
* Use it like this:
|
||||
*
|
||||
* #include <spice/start-packed.h>
|
||||
*
|
||||
* typedef struct SPICE_ATTR_PACKED {
|
||||
* ...
|
||||
* } Type;
|
||||
*
|
||||
* #include <spice/end-packed.h>
|
||||
*
|
||||
*/
|
||||
|
||||
#ifdef __GNUC__
|
||||
|
||||
#define SPICE_ATTR_PACKED __attribute__ ((__packed__))
|
||||
#define SPICE_ATTR_ALIGNED(n) __attribute__ ((__aligned__ (n)))
|
||||
|
||||
#ifdef __MINGW32__
|
||||
#pragma pack(push,1)
|
||||
#endif
|
||||
|
||||
#else
|
||||
|
||||
#pragma pack(push)
|
||||
#pragma pack(1)
|
||||
#define SPICE_ATTR_PACKED
|
||||
#define SPICE_ATTR_ALIGNED(n) __declspec (align (n))
|
||||
#pragma warning(disable:4200)
|
||||
#pragma warning(disable:4103)
|
||||
|
||||
#endif
|
@ -1,68 +0,0 @@
|
||||
/*
|
||||
Copyright (C) 2009 Red Hat, Inc.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in
|
||||
the documentation and/or other materials provided with the
|
||||
distribution.
|
||||
* Neither the name of the copyright holder nor the names of its
|
||||
contributors may be used to endorse or promote products derived
|
||||
from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS
|
||||
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef _H_SPICE_STATS
|
||||
#define _H_SPICE_STATS
|
||||
|
||||
#include <spice/macros.h>
|
||||
#include <spice/types.h>
|
||||
|
||||
#define SPICE_STAT_SHM_NAME "/spice.%u"
|
||||
#define SPICE_STAT_NODE_NAME_MAX 20
|
||||
#define SPICE_STAT_MAGIC SPICE_MAGIC_CONST("STAT")
|
||||
#define SPICE_STAT_VERSION 1
|
||||
|
||||
enum {
|
||||
SPICE_STAT_NODE_FLAG_ENABLED = (1 << 0),
|
||||
SPICE_STAT_NODE_FLAG_VISIBLE = (1 << 1),
|
||||
SPICE_STAT_NODE_FLAG_VALUE = (1 << 2),
|
||||
};
|
||||
|
||||
#define SPICE_STAT_NODE_MASK_SHOW (SPICE_STAT_NODE_FLAG_ENABLED | SPICE_STAT_NODE_FLAG_VISIBLE)
|
||||
#define SPICE_STAT_NODE_MASK_SHOW_VALUE (SPICE_STAT_NODE_MASK_SHOW | SPICE_STAT_NODE_FLAG_VALUE)
|
||||
|
||||
typedef struct SpiceStatNode {
|
||||
uint64_t value;
|
||||
uint32_t flags;
|
||||
uint32_t next_sibling_index;
|
||||
uint32_t first_child_index;
|
||||
char name[SPICE_STAT_NODE_NAME_MAX];
|
||||
} SpiceStatNode;
|
||||
|
||||
typedef struct SpiceStat {
|
||||
uint32_t magic;
|
||||
uint32_t version;
|
||||
uint32_t generation;
|
||||
uint32_t num_of_nodes;
|
||||
uint32_t root_index;
|
||||
SpiceStatNode nodes[];
|
||||
} SpiceStat;
|
||||
|
||||
#endif /* _H_SPICE_STATS */
|
@ -1,218 +0,0 @@
|
||||
/*
|
||||
Copyright (C) 2017-2018 Red Hat, Inc.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in
|
||||
the documentation and/or other materials provided with the
|
||||
distribution.
|
||||
* Neither the name of the copyright holder nor the names of its
|
||||
contributors may be used to endorse or promote products derived
|
||||
from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS
|
||||
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/*
|
||||
* This header contains definition for the device that
|
||||
* allows to send streamed data to the server.
|
||||
*
|
||||
* The device is currently implemented as a VirtIO port inside the
|
||||
* guest. The guest should open that device to use this protocol to
|
||||
* communicate with the host.
|
||||
*/
|
||||
|
||||
#ifndef SPICE_STREAM_DEVICE_H_
|
||||
#define SPICE_STREAM_DEVICE_H_
|
||||
|
||||
#include <spice/types.h>
|
||||
|
||||
/*
|
||||
* Structures are all "naturally aligned"
|
||||
* containing integers up to 64 bit.
|
||||
* All numbers are in little endian format.
|
||||
*
|
||||
* For security reasons structures should not contain implicit paddings.
|
||||
*
|
||||
* The protocol can be defined by these states:
|
||||
* - Initial. Device just opened. Guest should wait
|
||||
* for a message from the host;
|
||||
* - Idle. No streaming allowed;
|
||||
* - Ready. Server sent list of possible codecs;
|
||||
* - Streaming. Stream active, enabled by the guest.
|
||||
*/
|
||||
|
||||
/* version of the protocol */
|
||||
#define STREAM_DEVICE_PROTOCOL 1
|
||||
|
||||
typedef struct StreamDevHeader {
|
||||
/* should be STREAM_DEVICE_PROTOCOL */
|
||||
uint8_t protocol_version;
|
||||
/* reserved, should be set to 0 */
|
||||
uint8_t padding;
|
||||
/* as defined in StreamMsgType enumeration */
|
||||
uint16_t type;
|
||||
/* size of the following message.
|
||||
* A message of type STREAM_TYPE_XXX_YYY is represented with a
|
||||
* corresponding StreamMsgXxxYyy structure. */
|
||||
uint32_t size;
|
||||
} StreamDevHeader;
|
||||
|
||||
typedef enum StreamMsgType {
|
||||
/* invalid, do not use */
|
||||
STREAM_TYPE_INVALID = 0,
|
||||
/* allows to send version information */
|
||||
STREAM_TYPE_CAPABILITIES,
|
||||
/* send screen resolution */
|
||||
STREAM_TYPE_FORMAT,
|
||||
/* stream data */
|
||||
STREAM_TYPE_DATA,
|
||||
/* server ask to start a new stream */
|
||||
STREAM_TYPE_START_STOP,
|
||||
/* server notify errors to guest */
|
||||
STREAM_TYPE_NOTIFY_ERROR,
|
||||
/* guest cursor */
|
||||
STREAM_TYPE_CURSOR_SET,
|
||||
/* guest cursor position */
|
||||
STREAM_TYPE_CURSOR_MOVE,
|
||||
} StreamMsgType;
|
||||
|
||||
typedef enum StreamCapabilities {
|
||||
STREAM_CAP_END // this must be the last
|
||||
} StreamCapabilities;
|
||||
|
||||
/* Generic extension capabilities.
|
||||
* This is a set of bits to specify which capabilities host and guest support.
|
||||
* This message is sent by the host to the guest or by the guest to the host.
|
||||
* Should be sent as first message.
|
||||
* If it is not sent, it means that guest/host doesn't support any extension.
|
||||
* Guest should send this as a reply from same type of message
|
||||
* from the host.
|
||||
* This message should be limited to STREAM_MSG_CAPABILITIES_MAX_BYTES. This
|
||||
* allows plenty of negotiations.
|
||||
*
|
||||
* States allowed: Initial(host), Idle(guest)
|
||||
* state will change to Idle.
|
||||
*/
|
||||
typedef struct StreamMsgCapabilities {
|
||||
uint8_t capabilities[0];
|
||||
} StreamMsgCapabilities;
|
||||
|
||||
#define STREAM_MSG_CAPABILITIES_MAX_BYTES 1024
|
||||
|
||||
/* Define the format of the stream, start a new stream.
|
||||
* This message is sent by the guest to the host to
|
||||
* tell the host the new stream format.
|
||||
*
|
||||
* States allowed: Ready
|
||||
* state will change to Streaming.
|
||||
*/
|
||||
typedef struct StreamMsgFormat {
|
||||
/* screen resolution/stream size */
|
||||
uint32_t width;
|
||||
uint32_t height;
|
||||
/* as defined in SpiceVideoCodecType enumeration */
|
||||
uint8_t codec;
|
||||
uint8_t padding1[3];
|
||||
} StreamMsgFormat;
|
||||
|
||||
/* This message contains just raw data stream.
|
||||
* This message is sent by the guest to the host.
|
||||
*
|
||||
* States allowed: Streaming
|
||||
*/
|
||||
typedef struct StreamMsgData {
|
||||
uint8_t data[0];
|
||||
} StreamMsgData;
|
||||
|
||||
/* Tell to stop current stream and possibly start a new one.
|
||||
* This message is sent by the host to the guest.
|
||||
* Allows to communicate the codecs supported by the clients.
|
||||
* The agent should stop the old stream and if any codec in the
|
||||
* list is supported start streaming (as Mjpeg is always supported
|
||||
* agent should stop only on a real stop request).
|
||||
*
|
||||
* States allowed: any
|
||||
* state will change to Idle (no codecs) or Ready
|
||||
*/
|
||||
typedef struct StreamMsgStartStop {
|
||||
/* supported codecs, 0 to stop streaming */
|
||||
uint8_t num_codecs;
|
||||
/* as defined in SpiceVideoCodecType enumeration */
|
||||
uint8_t codecs[0];
|
||||
} StreamMsgStartStop;
|
||||
|
||||
/* Tell guest about invalid protocol.
|
||||
* This message is sent by the host to the guest.
|
||||
* The server will stop processing data from the guest.
|
||||
*
|
||||
* States allowed: any
|
||||
*/
|
||||
typedef struct StreamMsgNotifyError {
|
||||
/* numeric error code.
|
||||
* Currently not defined, set to 0.
|
||||
*/
|
||||
uint32_t error_code;
|
||||
/* String message, UTF-8 encoded.
|
||||
* This field terminate with the message.
|
||||
* Not necessary NUL-terminated.
|
||||
*/
|
||||
uint8_t msg[0];
|
||||
} StreamMsgNotifyError;
|
||||
|
||||
#define STREAM_MSG_CURSOR_SET_MAX_WIDTH 1024
|
||||
#define STREAM_MSG_CURSOR_SET_MAX_HEIGHT 1024
|
||||
|
||||
/* Guest cursor.
|
||||
* This message is sent by the guest to the host.
|
||||
*
|
||||
* States allowed: Streaming
|
||||
*/
|
||||
typedef struct StreamMsgCursorSet {
|
||||
/* basic cursor information */
|
||||
/* for security reasons width and height should
|
||||
* be limited to STREAM_MSG_CURSOR_SET_MAX_WIDTH and
|
||||
* STREAM_MSG_CURSOR_SET_MAX_HEIGHT */
|
||||
uint16_t width;
|
||||
uint16_t height;
|
||||
uint16_t hot_spot_x;
|
||||
uint16_t hot_spot_y;
|
||||
/* Cursor type, as defined by SpiceCursorType.
|
||||
* Only ALPHA, COLOR24 and COLOR32 are allowed by this protocol
|
||||
*/
|
||||
uint8_t type;
|
||||
|
||||
uint8_t padding1[3];
|
||||
|
||||
/* cursor data.
|
||||
* Format and size depends on cursor_header type and size
|
||||
*/
|
||||
uint8_t data[0];
|
||||
} StreamMsgCursorSet;
|
||||
|
||||
/* Guest cursor position
|
||||
* This message is sent by the guest to the host.
|
||||
*
|
||||
* States allowed: Streaming
|
||||
*/
|
||||
typedef struct StreamMsgCursorMove {
|
||||
int32_t x;
|
||||
int32_t y;
|
||||
} StreamMsgCursorMove;
|
||||
|
||||
#endif /* SPICE_STREAM_DEVICE_H_ */
|
@ -1,41 +0,0 @@
|
||||
/* -*- Mode: C; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
||||
/*
|
||||
Copyright (C) 2009 Red Hat, Inc.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in
|
||||
the documentation and/or other materials provided with the
|
||||
distribution.
|
||||
* Neither the name of the copyright holder nor the names of its
|
||||
contributors may be used to endorse or promote products derived
|
||||
from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS
|
||||
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef _H_SPICE_TYPES
|
||||
#define _H_SPICE_TYPES
|
||||
|
||||
/* We always want the standard int types
|
||||
* If they are not in stdint.h on your system,
|
||||
* include the right one here. */
|
||||
#include <stdint.h>
|
||||
#include <limits.h>
|
||||
|
||||
#endif /* _H_SPICE_TYPES */
|
@ -1,293 +0,0 @@
|
||||
/*
|
||||
Copyright (C) 2009 Red Hat, Inc.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in
|
||||
the documentation and/or other materials provided with the
|
||||
distribution.
|
||||
* Neither the name of the copyright holder nor the names of its
|
||||
contributors may be used to endorse or promote products derived
|
||||
from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS
|
||||
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef _H_VD_AGENT
|
||||
#define _H_VD_AGENT
|
||||
|
||||
#include <spice/types.h>
|
||||
|
||||
#include <spice/start-packed.h>
|
||||
|
||||
enum {
|
||||
VDP_CLIENT_PORT = 1,
|
||||
VDP_SERVER_PORT,
|
||||
VDP_END_PORT
|
||||
};
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED VDIChunkHeader {
|
||||
uint32_t port;
|
||||
uint32_t size;
|
||||
} VDIChunkHeader;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED VDAgentMessage {
|
||||
uint32_t protocol;
|
||||
uint32_t type;
|
||||
uint64_t opaque;
|
||||
uint32_t size;
|
||||
uint8_t data[0];
|
||||
} VDAgentMessage;
|
||||
|
||||
#define VD_AGENT_PROTOCOL 1
|
||||
#define VD_AGENT_MAX_DATA_SIZE 2048
|
||||
|
||||
#ifdef SPICE_DEPRECATED
|
||||
#define VD_AGENT_CLIPBOARD_MAX_SIZE_DEFAULT 1024
|
||||
#define VD_AGENT_CLIPBOARD_MAX_SIZE_ENV "SPICE_CLIPBOARD_MAX_SIZE"
|
||||
#endif
|
||||
|
||||
enum {
|
||||
VD_AGENT_MOUSE_STATE = 1,
|
||||
VD_AGENT_MONITORS_CONFIG,
|
||||
VD_AGENT_REPLY,
|
||||
/* Set clipboard data (both directions).
|
||||
* Message comes with type and data.
|
||||
* See VDAgentClipboard structure.
|
||||
*/
|
||||
VD_AGENT_CLIPBOARD,
|
||||
VD_AGENT_DISPLAY_CONFIG,
|
||||
VD_AGENT_ANNOUNCE_CAPABILITIES,
|
||||
/* Asks to listen for clipboard changes (both directions).
|
||||
* Remote should empty clipboard and wait for one
|
||||
* of the types passed.
|
||||
* See VDAgentClipboardGrab structure.
|
||||
*/
|
||||
VD_AGENT_CLIPBOARD_GRAB,
|
||||
/* Asks for clipboard data (both directions).
|
||||
* Request comes with a specific type.
|
||||
* See VDAgentClipboardRequest structure.
|
||||
*/
|
||||
VD_AGENT_CLIPBOARD_REQUEST,
|
||||
VD_AGENT_CLIPBOARD_RELEASE,
|
||||
VD_AGENT_FILE_XFER_START,
|
||||
VD_AGENT_FILE_XFER_STATUS,
|
||||
VD_AGENT_FILE_XFER_DATA,
|
||||
VD_AGENT_CLIENT_DISCONNECTED,
|
||||
VD_AGENT_MAX_CLIPBOARD,
|
||||
VD_AGENT_AUDIO_VOLUME_SYNC,
|
||||
VD_AGENT_END_MESSAGE,
|
||||
};
|
||||
|
||||
enum {
|
||||
VD_AGENT_FILE_XFER_STATUS_CAN_SEND_DATA,
|
||||
VD_AGENT_FILE_XFER_STATUS_CANCELLED,
|
||||
VD_AGENT_FILE_XFER_STATUS_ERROR,
|
||||
VD_AGENT_FILE_XFER_STATUS_SUCCESS,
|
||||
VD_AGENT_FILE_XFER_STATUS_NOT_ENOUGH_SPACE,
|
||||
VD_AGENT_FILE_XFER_STATUS_SESSION_LOCKED,
|
||||
VD_AGENT_FILE_XFER_STATUS_VDAGENT_NOT_CONNECTED,
|
||||
VD_AGENT_FILE_XFER_STATUS_DISABLED,
|
||||
};
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED VDAgentFileXferStatusMessage {
|
||||
uint32_t id;
|
||||
uint32_t result;
|
||||
/* Used to send additional data for detailed error messages
|
||||
* to clients with VD_AGENT_CAP_FILE_XFER_DETAILED_ERRORS capability.
|
||||
* Type of data varies with the result:
|
||||
* result : data type (NULL if no data)
|
||||
* VD_AGENT_FILE_XFER_STATUS_NOT_ENOUGH_SPACE : uint64_t
|
||||
* VD_AGENT_FILE_XFER_STATUS_SESSION_LOCKED : NULL
|
||||
* VD_AGENT_FILE_XFER_STATUS_VDAGENT_NOT_CONNECTED : NULL
|
||||
* VD_AGENT_FILE_XFER_STATUS_DISABLED : NULL
|
||||
*/
|
||||
uint8_t data[0];
|
||||
} VDAgentFileXferStatusMessage;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED VDAgentFileXferStartMessage {
|
||||
uint32_t id;
|
||||
uint8_t data[0];
|
||||
} VDAgentFileXferStartMessage;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED VDAgentFileXferDataMessage {
|
||||
uint32_t id;
|
||||
uint64_t size;
|
||||
uint8_t data[0];
|
||||
} VDAgentFileXferDataMessage;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED VDAgentMonConfig {
|
||||
/*
|
||||
* Note a width and height of 0 can be used to indicate a disabled
|
||||
* monitor, this may only be used with agents with the
|
||||
* VD_AGENT_CAP_SPARSE_MONITORS_CONFIG capability.
|
||||
*/
|
||||
uint32_t height;
|
||||
uint32_t width;
|
||||
uint32_t depth;
|
||||
int32_t x;
|
||||
int32_t y;
|
||||
} VDAgentMonConfig;
|
||||
|
||||
enum {
|
||||
VD_AGENT_CONFIG_MONITORS_FLAG_USE_POS = (1 << 0),
|
||||
};
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED VDAgentMonitorsConfig {
|
||||
uint32_t num_of_monitors;
|
||||
uint32_t flags;
|
||||
VDAgentMonConfig monitors[0];
|
||||
} VDAgentMonitorsConfig;
|
||||
|
||||
enum {
|
||||
VD_AGENT_DISPLAY_CONFIG_FLAG_DISABLE_WALLPAPER = (1 << 0),
|
||||
VD_AGENT_DISPLAY_CONFIG_FLAG_DISABLE_FONT_SMOOTH = (1 << 1),
|
||||
VD_AGENT_DISPLAY_CONFIG_FLAG_DISABLE_ANIMATION = (1 << 2),
|
||||
VD_AGENT_DISPLAY_CONFIG_FLAG_SET_COLOR_DEPTH = (1 << 3),
|
||||
};
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED VDAgentDisplayConfig {
|
||||
uint32_t flags;
|
||||
uint32_t depth;
|
||||
} VDAgentDisplayConfig;
|
||||
|
||||
#define VD_AGENT_LBUTTON_MASK (1 << 1)
|
||||
#define VD_AGENT_MBUTTON_MASK (1 << 2)
|
||||
#define VD_AGENT_RBUTTON_MASK (1 << 3)
|
||||
#define VD_AGENT_UBUTTON_MASK (1 << 4)
|
||||
#define VD_AGENT_DBUTTON_MASK (1 << 5)
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED VDAgentMouseState {
|
||||
uint32_t x;
|
||||
uint32_t y;
|
||||
uint32_t buttons;
|
||||
uint8_t display_id;
|
||||
} VDAgentMouseState;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED VDAgentReply {
|
||||
uint32_t type;
|
||||
uint32_t error;
|
||||
} VDAgentReply;
|
||||
|
||||
enum {
|
||||
VD_AGENT_SUCCESS = 1,
|
||||
VD_AGENT_ERROR,
|
||||
};
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED VDAgentClipboard {
|
||||
#if 0 /* VD_AGENT_CAP_CLIPBOARD_SELECTION */
|
||||
uint8_t selection;
|
||||
uint8_t __reserved[sizeof(uint32_t) - 1 * sizeof(uint8_t)];
|
||||
#endif
|
||||
uint32_t type;
|
||||
uint8_t data[0];
|
||||
} VDAgentClipboard;
|
||||
|
||||
enum {
|
||||
VD_AGENT_CLIPBOARD_NONE = 0,
|
||||
VD_AGENT_CLIPBOARD_UTF8_TEXT,
|
||||
VD_AGENT_CLIPBOARD_IMAGE_PNG, /* All clients with image support should support this one */
|
||||
VD_AGENT_CLIPBOARD_IMAGE_BMP, /* optional */
|
||||
VD_AGENT_CLIPBOARD_IMAGE_TIFF, /* optional */
|
||||
VD_AGENT_CLIPBOARD_IMAGE_JPG, /* optional */
|
||||
};
|
||||
|
||||
enum {
|
||||
VD_AGENT_CLIPBOARD_SELECTION_CLIPBOARD = 0,
|
||||
VD_AGENT_CLIPBOARD_SELECTION_PRIMARY,
|
||||
VD_AGENT_CLIPBOARD_SELECTION_SECONDARY,
|
||||
};
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED VDAgentClipboardGrab {
|
||||
#if 0 /* VD_AGENT_CAP_CLIPBOARD_SELECTION */
|
||||
uint8_t selection;
|
||||
uint8_t __reserved[sizeof(uint32_t) - 1 * sizeof(uint8_t)];
|
||||
#endif
|
||||
uint32_t types[0];
|
||||
} VDAgentClipboardGrab;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED VDAgentClipboardRequest {
|
||||
#if 0 /* VD_AGENT_CAP_CLIPBOARD_SELECTION */
|
||||
uint8_t selection;
|
||||
uint8_t __reserved[sizeof(uint32_t) - 1 * sizeof(uint8_t)];
|
||||
#endif
|
||||
uint32_t type;
|
||||
} VDAgentClipboardRequest;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED VDAgentClipboardRelease {
|
||||
#if 0 /* VD_AGENT_CAP_CLIPBOARD_SELECTION */
|
||||
uint8_t selection;
|
||||
uint8_t __reserved[sizeof(uint32_t) - 1 * sizeof(uint8_t)];
|
||||
#endif
|
||||
uint8_t dummy_empty_field[0]; /* C/C++ compatibility */
|
||||
} VDAgentClipboardRelease;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED VDAgentMaxClipboard {
|
||||
int32_t max;
|
||||
} VDAgentMaxClipboard;
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED VDAgentAudioVolumeSync {
|
||||
uint8_t is_playback;
|
||||
uint8_t mute;
|
||||
uint8_t nchannels;
|
||||
uint16_t volume[0];
|
||||
} VDAgentAudioVolumeSync;
|
||||
|
||||
enum {
|
||||
VD_AGENT_CAP_MOUSE_STATE = 0,
|
||||
VD_AGENT_CAP_MONITORS_CONFIG,
|
||||
VD_AGENT_CAP_REPLY,
|
||||
VD_AGENT_CAP_CLIPBOARD,
|
||||
VD_AGENT_CAP_DISPLAY_CONFIG,
|
||||
VD_AGENT_CAP_CLIPBOARD_BY_DEMAND,
|
||||
VD_AGENT_CAP_CLIPBOARD_SELECTION,
|
||||
VD_AGENT_CAP_SPARSE_MONITORS_CONFIG,
|
||||
VD_AGENT_CAP_GUEST_LINEEND_LF,
|
||||
VD_AGENT_CAP_GUEST_LINEEND_CRLF,
|
||||
VD_AGENT_CAP_MAX_CLIPBOARD,
|
||||
VD_AGENT_CAP_AUDIO_VOLUME_SYNC,
|
||||
VD_AGENT_CAP_MONITORS_CONFIG_POSITION,
|
||||
VD_AGENT_CAP_FILE_XFER_DISABLED,
|
||||
VD_AGENT_CAP_FILE_XFER_DETAILED_ERRORS,
|
||||
VD_AGENT_END_CAP,
|
||||
};
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED VDAgentAnnounceCapabilities {
|
||||
uint32_t request;
|
||||
uint32_t caps[0];
|
||||
} VDAgentAnnounceCapabilities;
|
||||
|
||||
#define VD_AGENT_CAPS_SIZE_FROM_MSG_SIZE(msg_size) \
|
||||
(((msg_size) - sizeof(VDAgentAnnounceCapabilities)) / sizeof(uint32_t))
|
||||
|
||||
#define VD_AGENT_CAPS_SIZE ((VD_AGENT_END_CAP + 31) / 32)
|
||||
|
||||
#define VD_AGENT_CAPS_BYTES (((VD_AGENT_END_CAP + 31) / 8) & ~3)
|
||||
|
||||
#define VD_AGENT_HAS_CAPABILITY(caps, caps_size, index) \
|
||||
((index) < (caps_size * 32) && ((caps)[(index) / 32] & (1 << ((index) % 32))))
|
||||
|
||||
#define VD_AGENT_SET_CAPABILITY(caps, index) \
|
||||
{ (caps)[(index) / 32] |= (1 << ((index) % 32)); }
|
||||
|
||||
#define VD_AGENT_CLEAR_CAPABILITY(caps, index) \
|
||||
{ (caps)[(index) / 32] &= ~(1 << ((index) % 32)); }
|
||||
|
||||
#include <spice/end-packed.h>
|
||||
|
||||
#endif /* _H_VD_AGENT */
|
@ -1,87 +0,0 @@
|
||||
/*
|
||||
Copyright (C) 2009 Red Hat, Inc.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in
|
||||
the documentation and/or other materials provided with the
|
||||
distribution.
|
||||
* Neither the name of the copyright holder nor the names of its
|
||||
contributors may be used to endorse or promote products derived
|
||||
from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS
|
||||
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef _H_VDI_DEV
|
||||
#define _H_VDI_DEV
|
||||
|
||||
#include <spice/types.h>
|
||||
#include <spice/barrier.h>
|
||||
#include <spice/ipc_ring.h>
|
||||
#include <spice/macros.h>
|
||||
|
||||
#include <spice/start-packed.h>
|
||||
|
||||
#ifndef SPICE_DISABLE_DEPRECATED
|
||||
#error "This SPICE interface is deprecated"
|
||||
#endif
|
||||
|
||||
#define REDHAT_PCI_VENDOR_ID 0x1b36
|
||||
|
||||
#define VDI_PORT_DEVICE_ID 0x0105
|
||||
#define VDI_PORT_REVISION 0x01
|
||||
|
||||
#define VDI_PORT_INTERRUPT (1 << 0)
|
||||
|
||||
#define VDI_PORT_MAGIC SPICE_MAGIC_CONST("VDIP")
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED VDIPortPacket {
|
||||
uint32_t gen;
|
||||
uint32_t size;
|
||||
uint8_t data[512 - 2 * sizeof(uint32_t)];
|
||||
} VDIPortPacket;
|
||||
|
||||
SPICE_RING_DECLARE(VDIPortRing, VDIPortPacket, 32);
|
||||
|
||||
enum {
|
||||
VDI_PORT_IO_RANGE_INDEX,
|
||||
VDI_PORT_RAM_RANGE_INDEX,
|
||||
};
|
||||
|
||||
enum {
|
||||
VDI_PORT_IO_CONNECTION,
|
||||
VDI_PORT_IO_NOTIFY = 4,
|
||||
VDI_PORT_IO_UPDATE_IRQ = 8,
|
||||
|
||||
VDI_PORT_IO_RANGE_SIZE = 12
|
||||
};
|
||||
|
||||
typedef struct SPICE_ATTR_PACKED VDIPortRam {
|
||||
uint32_t magic;
|
||||
uint32_t generation;
|
||||
uint32_t int_pending;
|
||||
uint32_t int_mask;
|
||||
VDIPortRing input;
|
||||
VDIPortRing output;
|
||||
uint32_t reserv[32];
|
||||
} VDIPortRam;
|
||||
|
||||
#include <spice/end-packed.h>
|
||||
|
||||
#endif /* _H_VDI_DEV */
|
@ -1 +0,0 @@
|
||||
0.14.1
|
@ -1 +0,0 @@
|
||||
0.14.0.304-02297-dirty
|
@ -1,69 +0,0 @@
|
||||
Spice Authors
|
||||
=============
|
||||
|
||||
The current active Spice maintainers are
|
||||
|
||||
Christophe Fergeau <cfergeau@redhat.com>
|
||||
Frediano Ziglio <fziglio@redhat.com>
|
||||
Jonathon Jongsma <jjongsma@redhat.com>
|
||||
Uri Lublin <uril@redhat.com>
|
||||
|
||||
Previous Spice maintainers were
|
||||
|
||||
Alon Levy <alevy@redhat.com>
|
||||
Gerd Hoffmann <kraxel@redhat.com>
|
||||
Izik Eidus <ieidus@redhat.com>
|
||||
Marc-André Lureau <marcandre.lureau@redhat.com>
|
||||
Yaniv Kamay <ykamay@redhat.com> (Original project author)
|
||||
Yonit Halperin <yhalperi@redhat.com>
|
||||
|
||||
Patches also contributed by
|
||||
|
||||
Alexander Larsson <alexl@redhat.com>
|
||||
Alexander Tsoy <alexander@tsoy.me>
|
||||
Andrew Eikum <aeikum@codeweavers.com>
|
||||
Aric Stewart <aric@codeweavers.com>
|
||||
Arnon Gilboa <agilboa@redhat.com>
|
||||
Axel Lin <axel.lin@ingics.com>
|
||||
소병철 <byungchul.so@samsung.com>
|
||||
Cédric Bosdonnat <cbosdonnat@suse.com>
|
||||
Christian Ruppert <idl0r@qasl.de>
|
||||
Christophe de Dinechin <dinechin@redhat.com>
|
||||
Cole Robinson <crobinso@redhat.com>
|
||||
Daniel P. Berrange <berrange@redhat.com>
|
||||
Dan Kenigsberg <danken@redhat.com>
|
||||
Dan McGee <dpmcgee@gmail.com>
|
||||
David Gibson <david@gibson.dropbear.id.au>
|
||||
David Jaša <djasa@redhat.com>
|
||||
Dunrong Huang <riegamaths@gmail.com>
|
||||
Eduardo Lima (Etrunko) <etrunko@redhat.com>
|
||||
Erlon Cruz <erlon.cruz@br.flextronics.com>
|
||||
Fabiano Fidêncio <fabiano@fidencio.org>
|
||||
Francois Gouget <fgouget@codeweavers.com>
|
||||
Gal Hammer <ghammer@redhat.com>
|
||||
Hans de Goede <hdegoede@redhat.com>
|
||||
Javier Celaya <javier.celaya@flexvm.es>
|
||||
Jeremy White <jwhite@codeweavers.com>
|
||||
Jürg Billeter <j@bitron.ch>
|
||||
Li Zhijian <lizhijian@cn.fujitsu.com>
|
||||
Liang Guo <bluestonechina@gmail.com>
|
||||
Lukáš Hrázký <lhrazky@redhat.com>
|
||||
Lukas Venhoda <lvenhoda@redhat.com>
|
||||
Michal Privoznik <mprivozn@redhat.com>
|
||||
Michael Tokarev <mjt@tls.msk.ru>
|
||||
Nahum Shalman <nshalman@elys.com>
|
||||
Nikolay Orlyuk <virkony@gmail.com>
|
||||
Pavel Grunt <pgrunt@redhat.com>
|
||||
Peter Robinson <pbrobinson@gmail.com>
|
||||
Sandy Stutsman <sstutsma@redhat.com>
|
||||
Snir Sheriber <ssheribe@redhat.com>
|
||||
Sunny Shin <sunny4s.git@gmail.com>
|
||||
Søren Sandmann Pedersen <ssp@redhat.com>
|
||||
Thomas Tyminski <thomast@cs.tu-berlin.de>
|
||||
Tiziano Mueller <dev-zero@gentoo.org>
|
||||
Victor Toso <victortoso@redhat.com>
|
||||
Wang Qiang <wangqiang.hunan@gmail.com>
|
||||
Yann E. MORIN <yann.morin.1998@free.fr>
|
||||
Zeeshan Ali (Khattak) <zeeshanak@gnome.org>
|
||||
|
||||
....send patches to get your name here...
|
502
spice/COPYING
502
spice/COPYING
@ -1,502 +0,0 @@
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 2.1, February 1999
|
||||
|
||||
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
[This is the first released version of the Lesser GPL. It also counts
|
||||
as the successor of the GNU Library Public License, version 2, hence
|
||||
the version number 2.1.]
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
Licenses are intended to guarantee your freedom to share and change
|
||||
free software--to make sure the software is free for all its users.
|
||||
|
||||
This license, the Lesser General Public License, applies to some
|
||||
specially designated software packages--typically libraries--of the
|
||||
Free Software Foundation and other authors who decide to use it. You
|
||||
can use it too, but we suggest you first think carefully about whether
|
||||
this license or the ordinary General Public License is the better
|
||||
strategy to use in any particular case, based on the explanations below.
|
||||
|
||||
When we speak of free software, we are referring to freedom of use,
|
||||
not price. Our General Public Licenses are designed to make sure that
|
||||
you have the freedom to distribute copies of free software (and charge
|
||||
for this service if you wish); that you receive source code or can get
|
||||
it if you want it; that you can change the software and use pieces of
|
||||
it in new free programs; and that you are informed that you can do
|
||||
these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
distributors to deny you these rights or to ask you to surrender these
|
||||
rights. These restrictions translate to certain responsibilities for
|
||||
you if you distribute copies of the library or if you modify it.
|
||||
|
||||
For example, if you distribute copies of the library, whether gratis
|
||||
or for a fee, you must give the recipients all the rights that we gave
|
||||
you. You must make sure that they, too, receive or can get the source
|
||||
code. If you link other code with the library, you must provide
|
||||
complete object files to the recipients, so that they can relink them
|
||||
with the library after making changes to the library and recompiling
|
||||
it. And you must show them these terms so they know their rights.
|
||||
|
||||
We protect your rights with a two-step method: (1) we copyright the
|
||||
library, and (2) we offer you this license, which gives you legal
|
||||
permission to copy, distribute and/or modify the library.
|
||||
|
||||
To protect each distributor, we want to make it very clear that
|
||||
there is no warranty for the free library. Also, if the library is
|
||||
modified by someone else and passed on, the recipients should know
|
||||
that what they have is not the original version, so that the original
|
||||
author's reputation will not be affected by problems that might be
|
||||
introduced by others.
|
||||
|
||||
Finally, software patents pose a constant threat to the existence of
|
||||
any free program. We wish to make sure that a company cannot
|
||||
effectively restrict the users of a free program by obtaining a
|
||||
restrictive license from a patent holder. Therefore, we insist that
|
||||
any patent license obtained for a version of the library must be
|
||||
consistent with the full freedom of use specified in this license.
|
||||
|
||||
Most GNU software, including some libraries, is covered by the
|
||||
ordinary GNU General Public License. This license, the GNU Lesser
|
||||
General Public License, applies to certain designated libraries, and
|
||||
is quite different from the ordinary General Public License. We use
|
||||
this license for certain libraries in order to permit linking those
|
||||
libraries into non-free programs.
|
||||
|
||||
When a program is linked with a library, whether statically or using
|
||||
a shared library, the combination of the two is legally speaking a
|
||||
combined work, a derivative of the original library. The ordinary
|
||||
General Public License therefore permits such linking only if the
|
||||
entire combination fits its criteria of freedom. The Lesser General
|
||||
Public License permits more lax criteria for linking other code with
|
||||
the library.
|
||||
|
||||
We call this license the "Lesser" General Public License because it
|
||||
does Less to protect the user's freedom than the ordinary General
|
||||
Public License. It also provides other free software developers Less
|
||||
of an advantage over competing non-free programs. These disadvantages
|
||||
are the reason we use the ordinary General Public License for many
|
||||
libraries. However, the Lesser license provides advantages in certain
|
||||
special circumstances.
|
||||
|
||||
For example, on rare occasions, there may be a special need to
|
||||
encourage the widest possible use of a certain library, so that it becomes
|
||||
a de-facto standard. To achieve this, non-free programs must be
|
||||
allowed to use the library. A more frequent case is that a free
|
||||
library does the same job as widely used non-free libraries. In this
|
||||
case, there is little to gain by limiting the free library to free
|
||||
software only, so we use the Lesser General Public License.
|
||||
|
||||
In other cases, permission to use a particular library in non-free
|
||||
programs enables a greater number of people to use a large body of
|
||||
free software. For example, permission to use the GNU C Library in
|
||||
non-free programs enables many more people to use the whole GNU
|
||||
operating system, as well as its variant, the GNU/Linux operating
|
||||
system.
|
||||
|
||||
Although the Lesser General Public License is Less protective of the
|
||||
users' freedom, it does ensure that the user of a program that is
|
||||
linked with the Library has the freedom and the wherewithal to run
|
||||
that program using a modified version of the Library.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow. Pay close attention to the difference between a
|
||||
"work based on the library" and a "work that uses the library". The
|
||||
former contains code derived from the library, whereas the latter must
|
||||
be combined with the library in order to run.
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License Agreement applies to any software library or other
|
||||
program which contains a notice placed by the copyright holder or
|
||||
other authorized party saying it may be distributed under the terms of
|
||||
this Lesser General Public License (also called "this License").
|
||||
Each licensee is addressed as "you".
|
||||
|
||||
A "library" means a collection of software functions and/or data
|
||||
prepared so as to be conveniently linked with application programs
|
||||
(which use some of those functions and data) to form executables.
|
||||
|
||||
The "Library", below, refers to any such software library or work
|
||||
which has been distributed under these terms. A "work based on the
|
||||
Library" means either the Library or any derivative work under
|
||||
copyright law: that is to say, a work containing the Library or a
|
||||
portion of it, either verbatim or with modifications and/or translated
|
||||
straightforwardly into another language. (Hereinafter, translation is
|
||||
included without limitation in the term "modification".)
|
||||
|
||||
"Source code" for a work means the preferred form of the work for
|
||||
making modifications to it. For a library, complete source code means
|
||||
all the source code for all modules it contains, plus any associated
|
||||
interface definition files, plus the scripts used to control compilation
|
||||
and installation of the library.
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running a program using the Library is not restricted, and output from
|
||||
such a program is covered only if its contents constitute a work based
|
||||
on the Library (independent of the use of the Library in a tool for
|
||||
writing it). Whether that is true depends on what the Library does
|
||||
and what the program that uses the Library does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Library's
|
||||
complete source code as you receive it, in any medium, provided that
|
||||
you conspicuously and appropriately publish on each copy an
|
||||
appropriate copyright notice and disclaimer of warranty; keep intact
|
||||
all the notices that refer to this License and to the absence of any
|
||||
warranty; and distribute a copy of this License along with the
|
||||
Library.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy,
|
||||
and you may at your option offer warranty protection in exchange for a
|
||||
fee.
|
||||
|
||||
2. You may modify your copy or copies of the Library or any portion
|
||||
of it, thus forming a work based on the Library, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) The modified work must itself be a software library.
|
||||
|
||||
b) You must cause the files modified to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
c) You must cause the whole of the work to be licensed at no
|
||||
charge to all third parties under the terms of this License.
|
||||
|
||||
d) If a facility in the modified Library refers to a function or a
|
||||
table of data to be supplied by an application program that uses
|
||||
the facility, other than as an argument passed when the facility
|
||||
is invoked, then you must make a good faith effort to ensure that,
|
||||
in the event an application does not supply such function or
|
||||
table, the facility still operates, and performs whatever part of
|
||||
its purpose remains meaningful.
|
||||
|
||||
(For example, a function in a library to compute square roots has
|
||||
a purpose that is entirely well-defined independent of the
|
||||
application. Therefore, Subsection 2d requires that any
|
||||
application-supplied function or table used by this function must
|
||||
be optional: if the application does not supply it, the square
|
||||
root function must still compute square roots.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Library,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Library, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote
|
||||
it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Library.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Library
|
||||
with the Library (or with a work based on the Library) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may opt to apply the terms of the ordinary GNU General Public
|
||||
License instead of this License to a given copy of the Library. To do
|
||||
this, you must alter all the notices that refer to this License, so
|
||||
that they refer to the ordinary GNU General Public License, version 2,
|
||||
instead of to this License. (If a newer version than version 2 of the
|
||||
ordinary GNU General Public License has appeared, then you can specify
|
||||
that version instead if you wish.) Do not make any other change in
|
||||
these notices.
|
||||
|
||||
Once this change is made in a given copy, it is irreversible for
|
||||
that copy, so the ordinary GNU General Public License applies to all
|
||||
subsequent copies and derivative works made from that copy.
|
||||
|
||||
This option is useful when you wish to copy part of the code of
|
||||
the Library into a program that is not a library.
|
||||
|
||||
4. You may copy and distribute the Library (or a portion or
|
||||
derivative of it, under Section 2) in object code or executable form
|
||||
under the terms of Sections 1 and 2 above provided that you accompany
|
||||
it with the complete corresponding machine-readable source code, which
|
||||
must be distributed under the terms of Sections 1 and 2 above on a
|
||||
medium customarily used for software interchange.
|
||||
|
||||
If distribution of object code is made by offering access to copy
|
||||
from a designated place, then offering equivalent access to copy the
|
||||
source code from the same place satisfies the requirement to
|
||||
distribute the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
5. A program that contains no derivative of any portion of the
|
||||
Library, but is designed to work with the Library by being compiled or
|
||||
linked with it, is called a "work that uses the Library". Such a
|
||||
work, in isolation, is not a derivative work of the Library, and
|
||||
therefore falls outside the scope of this License.
|
||||
|
||||
However, linking a "work that uses the Library" with the Library
|
||||
creates an executable that is a derivative of the Library (because it
|
||||
contains portions of the Library), rather than a "work that uses the
|
||||
library". The executable is therefore covered by this License.
|
||||
Section 6 states terms for distribution of such executables.
|
||||
|
||||
When a "work that uses the Library" uses material from a header file
|
||||
that is part of the Library, the object code for the work may be a
|
||||
derivative work of the Library even though the source code is not.
|
||||
Whether this is true is especially significant if the work can be
|
||||
linked without the Library, or if the work is itself a library. The
|
||||
threshold for this to be true is not precisely defined by law.
|
||||
|
||||
If such an object file uses only numerical parameters, data
|
||||
structure layouts and accessors, and small macros and small inline
|
||||
functions (ten lines or less in length), then the use of the object
|
||||
file is unrestricted, regardless of whether it is legally a derivative
|
||||
work. (Executables containing this object code plus portions of the
|
||||
Library will still fall under Section 6.)
|
||||
|
||||
Otherwise, if the work is a derivative of the Library, you may
|
||||
distribute the object code for the work under the terms of Section 6.
|
||||
Any executables containing that work also fall under Section 6,
|
||||
whether or not they are linked directly with the Library itself.
|
||||
|
||||
6. As an exception to the Sections above, you may also combine or
|
||||
link a "work that uses the Library" with the Library to produce a
|
||||
work containing portions of the Library, and distribute that work
|
||||
under terms of your choice, provided that the terms permit
|
||||
modification of the work for the customer's own use and reverse
|
||||
engineering for debugging such modifications.
|
||||
|
||||
You must give prominent notice with each copy of the work that the
|
||||
Library is used in it and that the Library and its use are covered by
|
||||
this License. You must supply a copy of this License. If the work
|
||||
during execution displays copyright notices, you must include the
|
||||
copyright notice for the Library among them, as well as a reference
|
||||
directing the user to the copy of this License. Also, you must do one
|
||||
of these things:
|
||||
|
||||
a) Accompany the work with the complete corresponding
|
||||
machine-readable source code for the Library including whatever
|
||||
changes were used in the work (which must be distributed under
|
||||
Sections 1 and 2 above); and, if the work is an executable linked
|
||||
with the Library, with the complete machine-readable "work that
|
||||
uses the Library", as object code and/or source code, so that the
|
||||
user can modify the Library and then relink to produce a modified
|
||||
executable containing the modified Library. (It is understood
|
||||
that the user who changes the contents of definitions files in the
|
||||
Library will not necessarily be able to recompile the application
|
||||
to use the modified definitions.)
|
||||
|
||||
b) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (1) uses at run time a
|
||||
copy of the library already present on the user's computer system,
|
||||
rather than copying library functions into the executable, and (2)
|
||||
will operate properly with a modified version of the library, if
|
||||
the user installs one, as long as the modified version is
|
||||
interface-compatible with the version that the work was made with.
|
||||
|
||||
c) Accompany the work with a written offer, valid for at
|
||||
least three years, to give the same user the materials
|
||||
specified in Subsection 6a, above, for a charge no more
|
||||
than the cost of performing this distribution.
|
||||
|
||||
d) If distribution of the work is made by offering access to copy
|
||||
from a designated place, offer equivalent access to copy the above
|
||||
specified materials from the same place.
|
||||
|
||||
e) Verify that the user has already received a copy of these
|
||||
materials or that you have already sent this user a copy.
|
||||
|
||||
For an executable, the required form of the "work that uses the
|
||||
Library" must include any data and utility programs needed for
|
||||
reproducing the executable from it. However, as a special exception,
|
||||
the materials to be distributed need not include anything that is
|
||||
normally distributed (in either source or binary form) with the major
|
||||
components (compiler, kernel, and so on) of the operating system on
|
||||
which the executable runs, unless that component itself accompanies
|
||||
the executable.
|
||||
|
||||
It may happen that this requirement contradicts the license
|
||||
restrictions of other proprietary libraries that do not normally
|
||||
accompany the operating system. Such a contradiction means you cannot
|
||||
use both them and the Library together in an executable that you
|
||||
distribute.
|
||||
|
||||
7. You may place library facilities that are a work based on the
|
||||
Library side-by-side in a single library together with other library
|
||||
facilities not covered by this License, and distribute such a combined
|
||||
library, provided that the separate distribution of the work based on
|
||||
the Library and of the other library facilities is otherwise
|
||||
permitted, and provided that you do these two things:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work
|
||||
based on the Library, uncombined with any other library
|
||||
facilities. This must be distributed under the terms of the
|
||||
Sections above.
|
||||
|
||||
b) Give prominent notice with the combined library of the fact
|
||||
that part of it is a work based on the Library, and explaining
|
||||
where to find the accompanying uncombined form of the same work.
|
||||
|
||||
8. You may not copy, modify, sublicense, link with, or distribute
|
||||
the Library except as expressly provided under this License. Any
|
||||
attempt otherwise to copy, modify, sublicense, link with, or
|
||||
distribute the Library is void, and will automatically terminate your
|
||||
rights under this License. However, parties who have received copies,
|
||||
or rights, from you under this License will not have their licenses
|
||||
terminated so long as such parties remain in full compliance.
|
||||
|
||||
9. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Library or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Library (or any work based on the
|
||||
Library), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Library or works based on it.
|
||||
|
||||
10. Each time you redistribute the Library (or any work based on the
|
||||
Library), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute, link with or modify the Library
|
||||
subject to these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties with
|
||||
this License.
|
||||
|
||||
11. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Library at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Library by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Library.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under any
|
||||
particular circumstance, the balance of the section is intended to apply,
|
||||
and the section as a whole is intended to apply in other circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
12. If the distribution and/or use of the Library is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Library under this License may add
|
||||
an explicit geographical distribution limitation excluding those countries,
|
||||
so that distribution is permitted only in or among countries not thus
|
||||
excluded. In such case, this License incorporates the limitation as if
|
||||
written in the body of this License.
|
||||
|
||||
13. The Free Software Foundation may publish revised and/or new
|
||||
versions of the Lesser General Public License from time to time.
|
||||
Such new versions will be similar in spirit to the present version,
|
||||
but may differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Library
|
||||
specifies a version number of this License which applies to it and
|
||||
"any later version", you have the option of following the terms and
|
||||
conditions either of that version or of any later version published by
|
||||
the Free Software Foundation. If the Library does not specify a
|
||||
license version number, you may choose any version ever published by
|
||||
the Free Software Foundation.
|
||||
|
||||
14. If you wish to incorporate parts of the Library into other free
|
||||
programs whose distribution conditions are incompatible with these,
|
||||
write to the author to ask for permission. For software which is
|
||||
copyrighted by the Free Software Foundation, write to the Free
|
||||
Software Foundation; we sometimes make exceptions for this. Our
|
||||
decision will be guided by the two goals of preserving the free status
|
||||
of all derivatives of our free software and of promoting the sharing
|
||||
and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
|
||||
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
|
||||
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
||||
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
|
||||
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
|
||||
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
|
||||
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
|
||||
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
|
||||
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
|
||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Libraries
|
||||
|
||||
If you develop a new library, and you want it to be of the greatest
|
||||
possible use to the public, we recommend making it free software that
|
||||
everyone can redistribute and change. You can do so by permitting
|
||||
redistribution under these terms (or, alternatively, under the terms of the
|
||||
ordinary General Public License).
|
||||
|
||||
To apply these terms, attach the following notices to the library. It is
|
||||
safest to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least the
|
||||
"copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the library's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the library, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
||||
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1990
|
||||
Ty Coon, President of Vice
|
||||
|
||||
That's all there is to it!
|
25719
spice/ChangeLog
25719
spice/ChangeLog
File diff suppressed because it is too large
Load Diff
368
spice/INSTALL
368
spice/INSTALL
@ -1,368 +0,0 @@
|
||||
Installation Instructions
|
||||
*************************
|
||||
|
||||
Copyright (C) 1994-1996, 1999-2002, 2004-2016 Free Software
|
||||
Foundation, Inc.
|
||||
|
||||
Copying and distribution of this file, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
notice and this notice are preserved. This file is offered as-is,
|
||||
without warranty of any kind.
|
||||
|
||||
Basic Installation
|
||||
==================
|
||||
|
||||
Briefly, the shell command './configure && make && make install'
|
||||
should configure, build, and install this package. The following
|
||||
more-detailed instructions are generic; see the 'README' file for
|
||||
instructions specific to this package. Some packages provide this
|
||||
'INSTALL' file but do not implement all of the features documented
|
||||
below. The lack of an optional feature in a given package is not
|
||||
necessarily a bug. More recommendations for GNU packages can be found
|
||||
in *note Makefile Conventions: (standards)Makefile Conventions.
|
||||
|
||||
The 'configure' shell script attempts to guess correct values for
|
||||
various system-dependent variables used during compilation. It uses
|
||||
those values to create a 'Makefile' in each directory of the package.
|
||||
It may also create one or more '.h' files containing system-dependent
|
||||
definitions. Finally, it creates a shell script 'config.status' that
|
||||
you can run in the future to recreate the current configuration, and a
|
||||
file 'config.log' containing compiler output (useful mainly for
|
||||
debugging 'configure').
|
||||
|
||||
It can also use an optional file (typically called 'config.cache' and
|
||||
enabled with '--cache-file=config.cache' or simply '-C') that saves the
|
||||
results of its tests to speed up reconfiguring. Caching is disabled by
|
||||
default to prevent problems with accidental use of stale cache files.
|
||||
|
||||
If you need to do unusual things to compile the package, please try
|
||||
to figure out how 'configure' could check whether to do them, and mail
|
||||
diffs or instructions to the address given in the 'README' so they can
|
||||
be considered for the next release. If you are using the cache, and at
|
||||
some point 'config.cache' contains results you don't want to keep, you
|
||||
may remove or edit it.
|
||||
|
||||
The file 'configure.ac' (or 'configure.in') is used to create
|
||||
'configure' by a program called 'autoconf'. You need 'configure.ac' if
|
||||
you want to change it or regenerate 'configure' using a newer version of
|
||||
'autoconf'.
|
||||
|
||||
The simplest way to compile this package is:
|
||||
|
||||
1. 'cd' to the directory containing the package's source code and type
|
||||
'./configure' to configure the package for your system.
|
||||
|
||||
Running 'configure' might take a while. While running, it prints
|
||||
some messages telling which features it is checking for.
|
||||
|
||||
2. Type 'make' to compile the package.
|
||||
|
||||
3. Optionally, type 'make check' to run any self-tests that come with
|
||||
the package, generally using the just-built uninstalled binaries.
|
||||
|
||||
4. Type 'make install' to install the programs and any data files and
|
||||
documentation. When installing into a prefix owned by root, it is
|
||||
recommended that the package be configured and built as a regular
|
||||
user, and only the 'make install' phase executed with root
|
||||
privileges.
|
||||
|
||||
5. Optionally, type 'make installcheck' to repeat any self-tests, but
|
||||
this time using the binaries in their final installed location.
|
||||
This target does not install anything. Running this target as a
|
||||
regular user, particularly if the prior 'make install' required
|
||||
root privileges, verifies that the installation completed
|
||||
correctly.
|
||||
|
||||
6. You can remove the program binaries and object files from the
|
||||
source code directory by typing 'make clean'. To also remove the
|
||||
files that 'configure' created (so you can compile the package for
|
||||
a different kind of computer), type 'make distclean'. There is
|
||||
also a 'make maintainer-clean' target, but that is intended mainly
|
||||
for the package's developers. If you use it, you may have to get
|
||||
all sorts of other programs in order to regenerate files that came
|
||||
with the distribution.
|
||||
|
||||
7. Often, you can also type 'make uninstall' to remove the installed
|
||||
files again. In practice, not all packages have tested that
|
||||
uninstallation works correctly, even though it is required by the
|
||||
GNU Coding Standards.
|
||||
|
||||
8. Some packages, particularly those that use Automake, provide 'make
|
||||
distcheck', which can by used by developers to test that all other
|
||||
targets like 'make install' and 'make uninstall' work correctly.
|
||||
This target is generally not run by end users.
|
||||
|
||||
Compilers and Options
|
||||
=====================
|
||||
|
||||
Some systems require unusual options for compilation or linking that
|
||||
the 'configure' script does not know about. Run './configure --help'
|
||||
for details on some of the pertinent environment variables.
|
||||
|
||||
You can give 'configure' initial values for configuration parameters
|
||||
by setting variables in the command line or in the environment. Here is
|
||||
an example:
|
||||
|
||||
./configure CC=c99 CFLAGS=-g LIBS=-lposix
|
||||
|
||||
*Note Defining Variables::, for more details.
|
||||
|
||||
Compiling For Multiple Architectures
|
||||
====================================
|
||||
|
||||
You can compile the package for more than one kind of computer at the
|
||||
same time, by placing the object files for each architecture in their
|
||||
own directory. To do this, you can use GNU 'make'. 'cd' to the
|
||||
directory where you want the object files and executables to go and run
|
||||
the 'configure' script. 'configure' automatically checks for the source
|
||||
code in the directory that 'configure' is in and in '..'. This is known
|
||||
as a "VPATH" build.
|
||||
|
||||
With a non-GNU 'make', it is safer to compile the package for one
|
||||
architecture at a time in the source code directory. After you have
|
||||
installed the package for one architecture, use 'make distclean' before
|
||||
reconfiguring for another architecture.
|
||||
|
||||
On MacOS X 10.5 and later systems, you can create libraries and
|
||||
executables that work on multiple system types--known as "fat" or
|
||||
"universal" binaries--by specifying multiple '-arch' options to the
|
||||
compiler but only a single '-arch' option to the preprocessor. Like
|
||||
this:
|
||||
|
||||
./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
|
||||
CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
|
||||
CPP="gcc -E" CXXCPP="g++ -E"
|
||||
|
||||
This is not guaranteed to produce working output in all cases, you
|
||||
may have to build one architecture at a time and combine the results
|
||||
using the 'lipo' tool if you have problems.
|
||||
|
||||
Installation Names
|
||||
==================
|
||||
|
||||
By default, 'make install' installs the package's commands under
|
||||
'/usr/local/bin', include files under '/usr/local/include', etc. You
|
||||
can specify an installation prefix other than '/usr/local' by giving
|
||||
'configure' the option '--prefix=PREFIX', where PREFIX must be an
|
||||
absolute file name.
|
||||
|
||||
You can specify separate installation prefixes for
|
||||
architecture-specific files and architecture-independent files. If you
|
||||
pass the option '--exec-prefix=PREFIX' to 'configure', the package uses
|
||||
PREFIX as the prefix for installing programs and libraries.
|
||||
Documentation and other data files still use the regular prefix.
|
||||
|
||||
In addition, if you use an unusual directory layout you can give
|
||||
options like '--bindir=DIR' to specify different values for particular
|
||||
kinds of files. Run 'configure --help' for a list of the directories
|
||||
you can set and what kinds of files go in them. In general, the default
|
||||
for these options is expressed in terms of '${prefix}', so that
|
||||
specifying just '--prefix' will affect all of the other directory
|
||||
specifications that were not explicitly provided.
|
||||
|
||||
The most portable way to affect installation locations is to pass the
|
||||
correct locations to 'configure'; however, many packages provide one or
|
||||
both of the following shortcuts of passing variable assignments to the
|
||||
'make install' command line to change installation locations without
|
||||
having to reconfigure or recompile.
|
||||
|
||||
The first method involves providing an override variable for each
|
||||
affected directory. For example, 'make install
|
||||
prefix=/alternate/directory' will choose an alternate location for all
|
||||
directory configuration variables that were expressed in terms of
|
||||
'${prefix}'. Any directories that were specified during 'configure',
|
||||
but not in terms of '${prefix}', must each be overridden at install time
|
||||
for the entire installation to be relocated. The approach of makefile
|
||||
variable overrides for each directory variable is required by the GNU
|
||||
Coding Standards, and ideally causes no recompilation. However, some
|
||||
platforms have known limitations with the semantics of shared libraries
|
||||
that end up requiring recompilation when using this method, particularly
|
||||
noticeable in packages that use GNU Libtool.
|
||||
|
||||
The second method involves providing the 'DESTDIR' variable. For
|
||||
example, 'make install DESTDIR=/alternate/directory' will prepend
|
||||
'/alternate/directory' before all installation names. The approach of
|
||||
'DESTDIR' overrides is not required by the GNU Coding Standards, and
|
||||
does not work on platforms that have drive letters. On the other hand,
|
||||
it does better at avoiding recompilation issues, and works well even
|
||||
when some directory options were not specified in terms of '${prefix}'
|
||||
at 'configure' time.
|
||||
|
||||
Optional Features
|
||||
=================
|
||||
|
||||
If the package supports it, you can cause programs to be installed
|
||||
with an extra prefix or suffix on their names by giving 'configure' the
|
||||
option '--program-prefix=PREFIX' or '--program-suffix=SUFFIX'.
|
||||
|
||||
Some packages pay attention to '--enable-FEATURE' options to
|
||||
'configure', where FEATURE indicates an optional part of the package.
|
||||
They may also pay attention to '--with-PACKAGE' options, where PACKAGE
|
||||
is something like 'gnu-as' or 'x' (for the X Window System). The
|
||||
'README' should mention any '--enable-' and '--with-' options that the
|
||||
package recognizes.
|
||||
|
||||
For packages that use the X Window System, 'configure' can usually
|
||||
find the X include and library files automatically, but if it doesn't,
|
||||
you can use the 'configure' options '--x-includes=DIR' and
|
||||
'--x-libraries=DIR' to specify their locations.
|
||||
|
||||
Some packages offer the ability to configure how verbose the
|
||||
execution of 'make' will be. For these packages, running './configure
|
||||
--enable-silent-rules' sets the default to minimal output, which can be
|
||||
overridden with 'make V=1'; while running './configure
|
||||
--disable-silent-rules' sets the default to verbose, which can be
|
||||
overridden with 'make V=0'.
|
||||
|
||||
Particular systems
|
||||
==================
|
||||
|
||||
On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC
|
||||
is not installed, it is recommended to use the following options in
|
||||
order to use an ANSI C compiler:
|
||||
|
||||
./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
|
||||
|
||||
and if that doesn't work, install pre-built binaries of GCC for HP-UX.
|
||||
|
||||
HP-UX 'make' updates targets which have the same time stamps as their
|
||||
prerequisites, which makes it generally unusable when shipped generated
|
||||
files such as 'configure' are involved. Use GNU 'make' instead.
|
||||
|
||||
On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
|
||||
parse its '<wchar.h>' header file. The option '-nodtk' can be used as a
|
||||
workaround. If GNU CC is not installed, it is therefore recommended to
|
||||
try
|
||||
|
||||
./configure CC="cc"
|
||||
|
||||
and if that doesn't work, try
|
||||
|
||||
./configure CC="cc -nodtk"
|
||||
|
||||
On Solaris, don't put '/usr/ucb' early in your 'PATH'. This
|
||||
directory contains several dysfunctional programs; working variants of
|
||||
these programs are available in '/usr/bin'. So, if you need '/usr/ucb'
|
||||
in your 'PATH', put it _after_ '/usr/bin'.
|
||||
|
||||
On Haiku, software installed for all users goes in '/boot/common',
|
||||
not '/usr/local'. It is recommended to use the following options:
|
||||
|
||||
./configure --prefix=/boot/common
|
||||
|
||||
Specifying the System Type
|
||||
==========================
|
||||
|
||||
There may be some features 'configure' cannot figure out
|
||||
automatically, but needs to determine by the type of machine the package
|
||||
will run on. Usually, assuming the package is built to be run on the
|
||||
_same_ architectures, 'configure' can figure that out, but if it prints
|
||||
a message saying it cannot guess the machine type, give it the
|
||||
'--build=TYPE' option. TYPE can either be a short name for the system
|
||||
type, such as 'sun4', or a canonical name which has the form:
|
||||
|
||||
CPU-COMPANY-SYSTEM
|
||||
|
||||
where SYSTEM can have one of these forms:
|
||||
|
||||
OS
|
||||
KERNEL-OS
|
||||
|
||||
See the file 'config.sub' for the possible values of each field. If
|
||||
'config.sub' isn't included in this package, then this package doesn't
|
||||
need to know the machine type.
|
||||
|
||||
If you are _building_ compiler tools for cross-compiling, you should
|
||||
use the option '--target=TYPE' to select the type of system they will
|
||||
produce code for.
|
||||
|
||||
If you want to _use_ a cross compiler, that generates code for a
|
||||
platform different from the build platform, you should specify the
|
||||
"host" platform (i.e., that on which the generated programs will
|
||||
eventually be run) with '--host=TYPE'.
|
||||
|
||||
Sharing Defaults
|
||||
================
|
||||
|
||||
If you want to set default values for 'configure' scripts to share,
|
||||
you can create a site shell script called 'config.site' that gives
|
||||
default values for variables like 'CC', 'cache_file', and 'prefix'.
|
||||
'configure' looks for 'PREFIX/share/config.site' if it exists, then
|
||||
'PREFIX/etc/config.site' if it exists. Or, you can set the
|
||||
'CONFIG_SITE' environment variable to the location of the site script.
|
||||
A warning: not all 'configure' scripts look for a site script.
|
||||
|
||||
Defining Variables
|
||||
==================
|
||||
|
||||
Variables not defined in a site shell script can be set in the
|
||||
environment passed to 'configure'. However, some packages may run
|
||||
configure again during the build, and the customized values of these
|
||||
variables may be lost. In order to avoid this problem, you should set
|
||||
them in the 'configure' command line, using 'VAR=value'. For example:
|
||||
|
||||
./configure CC=/usr/local2/bin/gcc
|
||||
|
||||
causes the specified 'gcc' to be used as the C compiler (unless it is
|
||||
overridden in the site shell script).
|
||||
|
||||
Unfortunately, this technique does not work for 'CONFIG_SHELL' due to an
|
||||
Autoconf limitation. Until the limitation is lifted, you can use this
|
||||
workaround:
|
||||
|
||||
CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
|
||||
|
||||
'configure' Invocation
|
||||
======================
|
||||
|
||||
'configure' recognizes the following options to control how it
|
||||
operates.
|
||||
|
||||
'--help'
|
||||
'-h'
|
||||
Print a summary of all of the options to 'configure', and exit.
|
||||
|
||||
'--help=short'
|
||||
'--help=recursive'
|
||||
Print a summary of the options unique to this package's
|
||||
'configure', and exit. The 'short' variant lists options used only
|
||||
in the top level, while the 'recursive' variant lists options also
|
||||
present in any nested packages.
|
||||
|
||||
'--version'
|
||||
'-V'
|
||||
Print the version of Autoconf used to generate the 'configure'
|
||||
script, and exit.
|
||||
|
||||
'--cache-file=FILE'
|
||||
Enable the cache: use and save the results of the tests in FILE,
|
||||
traditionally 'config.cache'. FILE defaults to '/dev/null' to
|
||||
disable caching.
|
||||
|
||||
'--config-cache'
|
||||
'-C'
|
||||
Alias for '--cache-file=config.cache'.
|
||||
|
||||
'--quiet'
|
||||
'--silent'
|
||||
'-q'
|
||||
Do not print messages saying which checks are being made. To
|
||||
suppress all normal output, redirect it to '/dev/null' (any error
|
||||
messages will still be shown).
|
||||
|
||||
'--srcdir=DIR'
|
||||
Look for the package's source code in directory DIR. Usually
|
||||
'configure' can determine that directory automatically.
|
||||
|
||||
'--prefix=DIR'
|
||||
Use DIR as the installation prefix. *note Installation Names:: for
|
||||
more details, including other options available for fine-tuning the
|
||||
installation locations.
|
||||
|
||||
'--no-create'
|
||||
'-n'
|
||||
Run the configure checks, but stop before creating any output
|
||||
files.
|
||||
|
||||
'configure' also accepts some other, not widely useful, options. Run
|
||||
'configure --help' for more details.
|
@ -1,40 +0,0 @@
|
||||
NULL =
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
|
||||
SUBDIRS = subprojects/spice-common server docs tools
|
||||
|
||||
check-valgrind:
|
||||
$(MAKE) -C server check-valgrind
|
||||
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
pkgconfig_DATA = spice-server.pc
|
||||
|
||||
DISTCHECK_CONFIGURE_FLAGS = \
|
||||
--disable-celt051 \
|
||||
--enable-smartcard \
|
||||
--with-sasl \
|
||||
--enable-manual \
|
||||
$(NULL)
|
||||
|
||||
EXTRA_DIST = \
|
||||
build-aux/git-version-gen \
|
||||
.version \
|
||||
$(NULL)
|
||||
|
||||
# Generate the ChangeLog file (with all entries since the switch to git)
|
||||
# and insert it into the directory we're about to use to create a tarball.
|
||||
.PHONY: gen-ChangeLog
|
||||
gen-ChangeLog:
|
||||
if test -d .git || test -d ../.git; then \
|
||||
$(top_srcdir)/build-aux/gitlog-to-changelog > $(distdir)/cl-t; \
|
||||
rm -f $(distdir)/ChangeLog; \
|
||||
mv $(distdir)/cl-t $(distdir)/ChangeLog; \
|
||||
fi
|
||||
|
||||
# see git-version-gen
|
||||
dist-hook: gen-ChangeLog
|
||||
echo $(VERSION) > $(distdir)/.tarball-version
|
||||
|
||||
BUILT_SOURCES = $(top_srcdir)/.version
|
||||
$(top_srcdir)/.version:
|
||||
echo $(VERSION) > $@-t && mv $@-t $@
|
@ -1,978 +0,0 @@
|
||||
# Makefile.in generated by automake 1.15.1 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2017 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = .
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_valgrind_check.m4 \
|
||||
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
|
||||
$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
|
||||
$(top_srcdir)/m4/lt~obsolete.m4 \
|
||||
$(top_srcdir)/m4/manywarnings.m4 \
|
||||
$(top_srcdir)/m4/spice-compile-warnings.m4 \
|
||||
$(top_srcdir)/m4/virt-linker-no-indirect.m4 \
|
||||
$(top_srcdir)/m4/virt-linker-relro.m4 \
|
||||
$(top_srcdir)/m4/warnings.m4 \
|
||||
$(top_srcdir)/subprojects/spice-common/m4/spice-deps.m4 \
|
||||
$(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
|
||||
$(am__configure_deps) $(am__DIST_COMMON)
|
||||
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
|
||||
configure.lineno config.status.lineno
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = config.h
|
||||
CONFIG_CLEAN_FILES = spice-server.pc
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
AM_V_P = $(am__v_P_@AM_V@)
|
||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||
am__v_P_0 = false
|
||||
am__v_P_1 = :
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
|
||||
ctags-recursive dvi-recursive html-recursive info-recursive \
|
||||
install-data-recursive install-dvi-recursive \
|
||||
install-exec-recursive install-html-recursive \
|
||||
install-info-recursive install-pdf-recursive \
|
||||
install-ps-recursive install-recursive installcheck-recursive \
|
||||
installdirs-recursive pdf-recursive ps-recursive \
|
||||
tags-recursive uninstall-recursive
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
||||
am__vpath_adj = case $$p in \
|
||||
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
*) f=$$p;; \
|
||||
esac;
|
||||
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
|
||||
am__install_max = 40
|
||||
am__nobase_strip_setup = \
|
||||
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
|
||||
am__nobase_strip = \
|
||||
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
|
||||
am__nobase_list = $(am__nobase_strip_setup); \
|
||||
for p in $$list; do echo "$$p $$p"; done | \
|
||||
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
|
||||
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
|
||||
if (++n[$$2] == $(am__install_max)) \
|
||||
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
|
||||
END { for (dir in files) print dir, files[dir] }'
|
||||
am__base_list = \
|
||||
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
|
||||
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
|
||||
am__uninstall_files_from_dir = { \
|
||||
test -z "$$files" \
|
||||
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|
||||
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
|
||||
$(am__cd) "$$dir" && rm -f $$files; }; \
|
||||
}
|
||||
am__installdirs = "$(DESTDIR)$(pkgconfigdir)"
|
||||
DATA = $(pkgconfig_DATA)
|
||||
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
|
||||
distclean-recursive maintainer-clean-recursive
|
||||
am__recursive_targets = \
|
||||
$(RECURSIVE_TARGETS) \
|
||||
$(RECURSIVE_CLEAN_TARGETS) \
|
||||
$(am__extra_recursive_targets)
|
||||
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
|
||||
cscope distdir dist dist-all distcheck
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
|
||||
$(LISP)config.h.in
|
||||
# Read a list of newline-separated strings from the standard input,
|
||||
# and print each of them once, without duplicates. Input order is
|
||||
# *not* preserved.
|
||||
am__uniquify_input = $(AWK) '\
|
||||
BEGIN { nonempty = 0; } \
|
||||
{ items[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in items) print i; }; } \
|
||||
'
|
||||
# Make sure the list of sources is unique. This is necessary because,
|
||||
# e.g., the same source file might be shared among _SOURCES variables
|
||||
# for different programs/libraries.
|
||||
am__define_uniq_tagged_files = \
|
||||
list='$(am__tagged_files)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | $(am__uniquify_input)`
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
CSCOPE = cscope
|
||||
DIST_SUBDIRS = $(SUBDIRS)
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \
|
||||
$(srcdir)/spice-server.pc.in AUTHORS COPYING ChangeLog INSTALL \
|
||||
NEWS README compile config.guess config.sub depcomp install-sh \
|
||||
ltmain.sh missing
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
distdir = $(PACKAGE)-$(VERSION)
|
||||
top_distdir = $(distdir)
|
||||
am__remove_distdir = \
|
||||
if test -d "$(distdir)"; then \
|
||||
find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
|
||||
&& rm -rf "$(distdir)" \
|
||||
|| { sleep 5 && rm -rf "$(distdir)"; }; \
|
||||
else :; fi
|
||||
am__post_remove_distdir = $(am__remove_distdir)
|
||||
am__relativize = \
|
||||
dir0=`pwd`; \
|
||||
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
|
||||
sed_rest='s,^[^/]*/*,,'; \
|
||||
sed_last='s,^.*/\([^/]*\)$$,\1,'; \
|
||||
sed_butlast='s,/*[^/]*$$,,'; \
|
||||
while test -n "$$dir1"; do \
|
||||
first=`echo "$$dir1" | sed -e "$$sed_first"`; \
|
||||
if test "$$first" != "."; then \
|
||||
if test "$$first" = ".."; then \
|
||||
dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
|
||||
dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
|
||||
else \
|
||||
first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
|
||||
if test "$$first2" = "$$first"; then \
|
||||
dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
|
||||
else \
|
||||
dir2="../$$dir2"; \
|
||||
fi; \
|
||||
dir0="$$dir0"/"$$first"; \
|
||||
fi; \
|
||||
fi; \
|
||||
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
|
||||
done; \
|
||||
reldir="$$dir2"
|
||||
GZIP_ENV = --best
|
||||
DIST_ARCHIVES = $(distdir).tar.bz2
|
||||
DIST_TARGETS = dist-bzip2
|
||||
distuninstallcheck_listfiles = find . -type f -print
|
||||
am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
|
||||
| sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
|
||||
distcleancheck_listfiles = find . -type f -print
|
||||
A2X = @A2X@
|
||||
ACLOCAL = @ACLOCAL@
|
||||
ALLOCA = @ALLOCA@
|
||||
AMTAR = @AMTAR@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
ASCIIDOC = @ASCIIDOC@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CELT051_CFLAGS = @CELT051_CFLAGS@
|
||||
CELT051_LIBS = @CELT051_LIBS@
|
||||
CFLAGS = @CFLAGS@
|
||||
COMMON_CFLAGS = @COMMON_CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
DUMPBIN = @DUMPBIN@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
ENABLE_VALGRIND_drd = @ENABLE_VALGRIND_drd@
|
||||
ENABLE_VALGRIND_helgrind = @ENABLE_VALGRIND_helgrind@
|
||||
ENABLE_VALGRIND_memcheck = @ENABLE_VALGRIND_memcheck@
|
||||
ENABLE_VALGRIND_sgcheck = @ENABLE_VALGRIND_sgcheck@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
GIO_UNIX_CFLAGS = @GIO_UNIX_CFLAGS@
|
||||
GIO_UNIX_LIBS = @GIO_UNIX_LIBS@
|
||||
GLIB2_CFLAGS = @GLIB2_CFLAGS@
|
||||
GLIB2_LIBS = @GLIB2_LIBS@
|
||||
GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@
|
||||
GOBJECT2_LIBS = @GOBJECT2_LIBS@
|
||||
GREP = @GREP@
|
||||
GSTREAMER_0_10_CFLAGS = @GSTREAMER_0_10_CFLAGS@
|
||||
GSTREAMER_0_10_LIBS = @GSTREAMER_0_10_LIBS@
|
||||
GSTREAMER_1_0_CFLAGS = @GSTREAMER_1_0_CFLAGS@
|
||||
GSTREAMER_1_0_LIBS = @GSTREAMER_1_0_LIBS@
|
||||
GST_INSPECT_0_10 = @GST_INSPECT_0_10@
|
||||
GST_INSPECT_1_0 = @GST_INSPECT_1_0@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
JPEG_LIBS = @JPEG_LIBS@
|
||||
LD = @LD@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBM = @LIBM@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBRT = @LIBRT@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LIPO = @LIPO@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
|
||||
LZ4_CFLAGS = @LZ4_CFLAGS@
|
||||
LZ4_LIBS = @LZ4_LIBS@
|
||||
MAINT = @MAINT@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
NM = @NM@
|
||||
NMEDIT = @NMEDIT@
|
||||
NO_INDIRECT_LDFLAGS = @NO_INDIRECT_LDFLAGS@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
ORC_CFLAGS = @ORC_CFLAGS@
|
||||
ORC_LIBS = @ORC_LIBS@
|
||||
OTOOL = @OTOOL@
|
||||
OTOOL64 = @OTOOL64@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PIXMAN_CFLAGS = @PIXMAN_CFLAGS@
|
||||
PIXMAN_LIBS = @PIXMAN_LIBS@
|
||||
PKG_CONFIG = @PKG_CONFIG@
|
||||
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
|
||||
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
|
||||
RANLIB = @RANLIB@
|
||||
RELRO_LDFLAGS = @RELRO_LDFLAGS@
|
||||
SASL_CFLAGS = @SASL_CFLAGS@
|
||||
SASL_LIBS = @SASL_LIBS@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
SMARTCARD_CFLAGS = @SMARTCARD_CFLAGS@
|
||||
SMARTCARD_LIBS = @SMARTCARD_LIBS@
|
||||
SPICE_COMMON_DIR = @SPICE_COMMON_DIR@
|
||||
SPICE_LT_VERSION = @SPICE_LT_VERSION@
|
||||
SPICE_NONPKGCONFIG_CFLAGS = @SPICE_NONPKGCONFIG_CFLAGS@
|
||||
SPICE_NONPKGCONFIG_LIBS = @SPICE_NONPKGCONFIG_LIBS@
|
||||
SPICE_PROTOCOL_CFLAGS = @SPICE_PROTOCOL_CFLAGS@
|
||||
SPICE_PROTOCOL_LIBS = @SPICE_PROTOCOL_LIBS@
|
||||
SPICE_PROTOCOL_MIN_VER = @SPICE_PROTOCOL_MIN_VER@
|
||||
SPICE_REQUIRES = @SPICE_REQUIRES@
|
||||
SPICE_SERVER_VERSION = @SPICE_SERVER_VERSION@
|
||||
SSL_CFLAGS = @SSL_CFLAGS@
|
||||
SSL_LIBS = @SSL_LIBS@
|
||||
STRIP = @STRIP@
|
||||
VALGRIND = @VALGRIND@
|
||||
VALGRIND_ENABLED = @VALGRIND_ENABLED@
|
||||
VERSION = @VERSION@
|
||||
VISIBILITY_HIDDEN_CFLAGS = @VISIBILITY_HIDDEN_CFLAGS@
|
||||
WARN_CFLAGS = @WARN_CFLAGS@
|
||||
WARN_CXXFLAGS = @WARN_CXXFLAGS@
|
||||
WARN_LDFLAGS = @WARN_LDFLAGS@
|
||||
Z_LIBS = @Z_LIBS@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
subdirs = @subdirs@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
valgrind_enabled_tools = @valgrind_enabled_tools@
|
||||
valgrind_tools = @valgrind_tools@
|
||||
NULL =
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
SUBDIRS = subprojects/spice-common server docs tools
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
pkgconfig_DATA = spice-server.pc
|
||||
DISTCHECK_CONFIGURE_FLAGS = \
|
||||
--disable-celt051 \
|
||||
--enable-smartcard \
|
||||
--with-sasl \
|
||||
--enable-manual \
|
||||
$(NULL)
|
||||
|
||||
EXTRA_DIST = \
|
||||
build-aux/git-version-gen \
|
||||
.version \
|
||||
$(NULL)
|
||||
|
||||
BUILT_SOURCES = $(top_srcdir)/.version
|
||||
all: $(BUILT_SOURCES) config.h
|
||||
$(MAKE) $(AM_MAKEFLAGS) all-recursive
|
||||
|
||||
.SUFFIXES:
|
||||
am--refresh: Makefile
|
||||
@:
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
|
||||
$(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
echo ' $(SHELL) ./config.status'; \
|
||||
$(SHELL) ./config.status;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
$(SHELL) ./config.status --recheck
|
||||
|
||||
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
$(am__cd) $(srcdir) && $(AUTOCONF)
|
||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||
$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
|
||||
$(am__aclocal_m4_deps):
|
||||
|
||||
config.h: stamp-h1
|
||||
@test -f $@ || rm -f stamp-h1
|
||||
@test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
|
||||
|
||||
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
|
||||
@rm -f stamp-h1
|
||||
cd $(top_builddir) && $(SHELL) ./config.status config.h
|
||||
$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
($(am__cd) $(top_srcdir) && $(AUTOHEADER))
|
||||
rm -f stamp-h1
|
||||
touch $@
|
||||
|
||||
distclean-hdr:
|
||||
-rm -f config.h stamp-h1
|
||||
spice-server.pc: $(top_builddir)/config.status $(srcdir)/spice-server.pc.in
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $@
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
distclean-libtool:
|
||||
-rm -f libtool config.lt
|
||||
install-pkgconfigDATA: $(pkgconfig_DATA)
|
||||
@$(NORMAL_INSTALL)
|
||||
@list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
|
||||
if test -n "$$list"; then \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \
|
||||
fi; \
|
||||
for p in $$list; do \
|
||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||
echo "$$d$$p"; \
|
||||
done | $(am__base_list) | \
|
||||
while read files; do \
|
||||
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \
|
||||
$(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \
|
||||
done
|
||||
|
||||
uninstall-pkgconfigDATA:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
|
||||
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
|
||||
dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir)
|
||||
|
||||
# This directory's subdirectories are mostly independent; you can cd
|
||||
# into them and run 'make' without going through this Makefile.
|
||||
# To change the values of 'make' variables: instead of editing Makefiles,
|
||||
# (1) if the variable is set in 'config.status', edit 'config.status'
|
||||
# (which will cause the Makefiles to be regenerated when you run 'make');
|
||||
# (2) otherwise, pass the desired values on the 'make' command line.
|
||||
$(am__recursive_targets):
|
||||
@fail=; \
|
||||
if $(am__make_keepgoing); then \
|
||||
failcom='fail=yes'; \
|
||||
else \
|
||||
failcom='exit 1'; \
|
||||
fi; \
|
||||
dot_seen=no; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
case "$@" in \
|
||||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||
*) list='$(SUBDIRS)' ;; \
|
||||
esac; \
|
||||
for subdir in $$list; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
dot_seen=yes; \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done; \
|
||||
if test "$$dot_seen" = "no"; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||
fi; test -z "$$fail"
|
||||
|
||||
ID: $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); mkid -fID $$unique
|
||||
tags: tags-recursive
|
||||
TAGS: tags
|
||||
|
||||
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
set x; \
|
||||
here=`pwd`; \
|
||||
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
||||
include_option=--etags-include; \
|
||||
empty_fix=.; \
|
||||
else \
|
||||
include_option=--include; \
|
||||
empty_fix=; \
|
||||
fi; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test ! -f $$subdir/TAGS || \
|
||||
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
|
||||
fi; \
|
||||
done; \
|
||||
$(am__define_uniq_tagged_files); \
|
||||
shift; \
|
||||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
if test $$# -gt 0; then \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
"$$@" $$unique; \
|
||||
else \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$unique; \
|
||||
fi; \
|
||||
fi
|
||||
ctags: ctags-recursive
|
||||
|
||||
CTAGS: ctags
|
||||
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); \
|
||||
test -z "$(CTAGS_ARGS)$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& $(am__cd) $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||
cscope: cscope.files
|
||||
test ! -s cscope.files \
|
||||
|| $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
|
||||
clean-cscope:
|
||||
-rm -f cscope.files
|
||||
cscope.files: clean-cscope cscopelist
|
||||
cscopelist: cscopelist-recursive
|
||||
|
||||
cscopelist-am: $(am__tagged_files)
|
||||
list='$(am__tagged_files)'; \
|
||||
case "$(srcdir)" in \
|
||||
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
||||
*) sdir=$(subdir)/$(srcdir) ;; \
|
||||
esac; \
|
||||
for i in $$list; do \
|
||||
if test -f "$$i"; then \
|
||||
echo "$(subdir)/$$i"; \
|
||||
else \
|
||||
echo "$$sdir/$$i"; \
|
||||
fi; \
|
||||
done >> $(top_builddir)/cscope.files
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
-rm -f cscope.out cscope.in.out cscope.po.out cscope.files
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
$(am__remove_distdir)
|
||||
test -d "$(distdir)" || mkdir "$(distdir)"
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
$(am__make_dryrun) \
|
||||
|| test -d "$(distdir)/$$subdir" \
|
||||
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|
||||
|| exit 1; \
|
||||
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
|
||||
$(am__relativize); \
|
||||
new_distdir=$$reldir; \
|
||||
dir1=$$subdir; dir2="$(top_distdir)"; \
|
||||
$(am__relativize); \
|
||||
new_top_distdir=$$reldir; \
|
||||
echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
|
||||
echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
|
||||
($(am__cd) $$subdir && \
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="$$new_top_distdir" \
|
||||
distdir="$$new_distdir" \
|
||||
am__remove_distdir=: \
|
||||
am__skip_length_check=: \
|
||||
am__skip_mode_fix=: \
|
||||
distdir) \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="$(top_distdir)" distdir="$(distdir)" \
|
||||
dist-hook
|
||||
-test -n "$(am__skip_mode_fix)" \
|
||||
|| find "$(distdir)" -type d ! -perm -755 \
|
||||
-exec chmod u+rwx,go+rx {} \; -o \
|
||||
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
|
||||
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
|
||||
! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
|
||||
|| chmod -R a+r "$(distdir)"
|
||||
dist-gzip: distdir
|
||||
tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz
|
||||
$(am__post_remove_distdir)
|
||||
dist-bzip2: distdir
|
||||
tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-lzip: distdir
|
||||
tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-xz: distdir
|
||||
tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-tarZ: distdir
|
||||
@echo WARNING: "Support for distribution archives compressed with" \
|
||||
"legacy program 'compress' is deprecated." >&2
|
||||
@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
|
||||
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-shar: distdir
|
||||
@echo WARNING: "Support for shar distribution archives is" \
|
||||
"deprecated." >&2
|
||||
@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
|
||||
shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-zip: distdir
|
||||
-rm -f $(distdir).zip
|
||||
zip -rq $(distdir).zip $(distdir)
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist dist-all:
|
||||
$(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
# This target untars the dist file and tries a VPATH configuration. Then
|
||||
# it guarantees that the distribution is self-contained by making another
|
||||
# tarfile.
|
||||
distcheck: dist
|
||||
case '$(DIST_ARCHIVES)' in \
|
||||
*.tar.gz*) \
|
||||
eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\
|
||||
*.tar.bz2*) \
|
||||
bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
|
||||
*.tar.lz*) \
|
||||
lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
|
||||
*.tar.xz*) \
|
||||
xz -dc $(distdir).tar.xz | $(am__untar) ;;\
|
||||
*.tar.Z*) \
|
||||
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
|
||||
*.shar.gz*) \
|
||||
eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\
|
||||
*.zip*) \
|
||||
unzip $(distdir).zip ;;\
|
||||
esac
|
||||
chmod -R a-w $(distdir)
|
||||
chmod u+w $(distdir)
|
||||
mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
|
||||
chmod a-w $(distdir)
|
||||
test -d $(distdir)/_build || exit 0; \
|
||||
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
|
||||
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
|
||||
&& am__cwd=`pwd` \
|
||||
&& $(am__cd) $(distdir)/_build/sub \
|
||||
&& ../../configure \
|
||||
$(AM_DISTCHECK_CONFIGURE_FLAGS) \
|
||||
$(DISTCHECK_CONFIGURE_FLAGS) \
|
||||
--srcdir=../.. --prefix="$$dc_install_base" \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) check \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) install \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
|
||||
distuninstallcheck \
|
||||
&& chmod -R a-w "$$dc_install_base" \
|
||||
&& ({ \
|
||||
(cd ../.. && umask 077 && mkdir "$$dc_destdir") \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
|
||||
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
|
||||
} || { rm -rf "$$dc_destdir"; exit 1; }) \
|
||||
&& rm -rf "$$dc_destdir" \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dist \
|
||||
&& rm -rf $(DIST_ARCHIVES) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
|
||||
&& cd "$$am__cwd" \
|
||||
|| exit 1
|
||||
$(am__post_remove_distdir)
|
||||
@(echo "$(distdir) archives ready for distribution: "; \
|
||||
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
|
||||
sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
|
||||
distuninstallcheck:
|
||||
@test -n '$(distuninstallcheck_dir)' || { \
|
||||
echo 'ERROR: trying to run $@ with an empty' \
|
||||
'$$(distuninstallcheck_dir)' >&2; \
|
||||
exit 1; \
|
||||
}; \
|
||||
$(am__cd) '$(distuninstallcheck_dir)' || { \
|
||||
echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
|
||||
exit 1; \
|
||||
}; \
|
||||
test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
|
||||
|| { echo "ERROR: files left after uninstall:" ; \
|
||||
if test -n "$(DESTDIR)"; then \
|
||||
echo " (check DESTDIR support)"; \
|
||||
fi ; \
|
||||
$(distuninstallcheck_listfiles) ; \
|
||||
exit 1; } >&2
|
||||
distcleancheck: distclean
|
||||
@if test '$(srcdir)' = . ; then \
|
||||
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
|
||||
exit 1 ; \
|
||||
fi
|
||||
@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|
||||
|| { echo "ERROR: files left in build directory after distclean:" ; \
|
||||
$(distcleancheck_listfiles) ; \
|
||||
exit 1; } >&2
|
||||
check-am: all-am
|
||||
check: $(BUILT_SOURCES)
|
||||
$(MAKE) $(AM_MAKEFLAGS) check-recursive
|
||||
all-am: Makefile $(DATA) config.h
|
||||
installdirs: installdirs-recursive
|
||||
installdirs-am:
|
||||
for dir in "$(DESTDIR)$(pkgconfigdir)"; do \
|
||||
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
|
||||
done
|
||||
install: $(BUILT_SOURCES)
|
||||
$(MAKE) $(AM_MAKEFLAGS) install-recursive
|
||||
install-exec: install-exec-recursive
|
||||
install-data: install-data-recursive
|
||||
uninstall: uninstall-recursive
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-recursive
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
|
||||
clean: clean-recursive
|
||||
|
||||
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-recursive
|
||||
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic distclean-hdr \
|
||||
distclean-libtool distclean-tags
|
||||
|
||||
dvi: dvi-recursive
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-recursive
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-recursive
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am: install-pkgconfigDATA
|
||||
|
||||
install-dvi: install-dvi-recursive
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-recursive
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-recursive
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-recursive
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-recursive
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-recursive
|
||||
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||
-rm -rf $(top_srcdir)/autom4te.cache
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-recursive
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf: pdf-recursive
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-recursive
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-pkgconfigDATA
|
||||
|
||||
.MAKE: $(am__recursive_targets) all check install install-am \
|
||||
install-strip
|
||||
|
||||
.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
|
||||
am--refresh check check-am clean clean-cscope clean-generic \
|
||||
clean-libtool cscope cscopelist-am ctags ctags-am dist \
|
||||
dist-all dist-bzip2 dist-gzip dist-hook dist-lzip dist-shar \
|
||||
dist-tarZ dist-xz dist-zip distcheck distclean \
|
||||
distclean-generic distclean-hdr distclean-libtool \
|
||||
distclean-tags distcleancheck distdir distuninstallcheck dvi \
|
||||
dvi-am html html-am info info-am install install-am \
|
||||
install-data install-data-am install-dvi install-dvi-am \
|
||||
install-exec install-exec-am install-html install-html-am \
|
||||
install-info install-info-am install-man install-pdf \
|
||||
install-pdf-am install-pkgconfigDATA install-ps install-ps-am \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
installdirs-am maintainer-clean maintainer-clean-generic \
|
||||
mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
|
||||
ps ps-am tags tags-am uninstall uninstall-am \
|
||||
uninstall-pkgconfigDATA
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
check-valgrind:
|
||||
$(MAKE) -C server check-valgrind
|
||||
|
||||
# Generate the ChangeLog file (with all entries since the switch to git)
|
||||
# and insert it into the directory we're about to use to create a tarball.
|
||||
.PHONY: gen-ChangeLog
|
||||
gen-ChangeLog:
|
||||
if test -d .git || test -d ../.git; then \
|
||||
$(top_srcdir)/build-aux/gitlog-to-changelog > $(distdir)/cl-t; \
|
||||
rm -f $(distdir)/ChangeLog; \
|
||||
mv $(distdir)/cl-t $(distdir)/ChangeLog; \
|
||||
fi
|
||||
|
||||
# see git-version-gen
|
||||
dist-hook: gen-ChangeLog
|
||||
echo $(VERSION) > $(distdir)/.tarball-version
|
||||
$(top_srcdir)/.version:
|
||||
echo $(VERSION) > $@-t && mv $@-t $@
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
447
spice/NEWS
447
spice/NEWS
@ -1,447 +0,0 @@
|
||||
Major Changes in 0.14.1:
|
||||
========================
|
||||
|
||||
The main change in this release is the addition of a new protocol extension
|
||||
in order to support streaming the remote display as a video stream rather than
|
||||
going through the QXL protocol. Together with spice-streaming-agent, and/or with
|
||||
more work on the qemu/spice-server side, this should allow streaming of 3D
|
||||
accelerated VMs in the future. At this point, this part of spice-server is
|
||||
still a work in progress (multi-monitor support and various features are
|
||||
missing).
|
||||
|
||||
* add new org.spice-space.stream.0 channel used for passing an encoded video
|
||||
stream from the guest to the client
|
||||
* add support for TCP_CORK to reduce the amount of packets that we send
|
||||
* fix CVE-2018-10873
|
||||
* fix cursor related migration crash
|
||||
* fix regression causing sound recording to be muted after
|
||||
client disconnection/reconnection (introduced in 0.13.90)
|
||||
* fix regression in corner cases where images could be sent uncompressed
|
||||
when they used to be compressed with QUIC
|
||||
* disable TLS 1.0 support
|
||||
* CELT 0.5.1 support is now disabled by default. If celt051-devel is installed
|
||||
at build-time, --enable-celt051/--disable-celt051 must be explicitly specified
|
||||
* drop support for unsupported OpenSSL version. OpenSSL 1.0.0 or newer is now
|
||||
required
|
||||
* bumped minimum required glib version to 2.32
|
||||
* endianness fixes
|
||||
* (small) leak fixes
|
||||
* usual round of code cleanups
|
||||
* not directly related to this release, but the upstream git repository is now
|
||||
hosted on gitlab.freedesktop.org
|
||||
|
||||
Major Changes in 0.14.0:
|
||||
========================
|
||||
|
||||
This is the first release in the new 0.14.x stable series. This release should
|
||||
be ready for production use.
|
||||
|
||||
* fix client mouse with virgl
|
||||
* fix frozen display after seamless migration
|
||||
|
||||
Major Changes in 0.13.91:
|
||||
=========================
|
||||
|
||||
*** IMPORTANT ***
|
||||
0.13.91 is the first release candidate for the stable 0.14.x series. While some
|
||||
bugs might still be present, it should be stable.
|
||||
|
||||
* set human-readable name on spice threads
|
||||
* leak fixes
|
||||
* robustness improvements (fix potential crashes in situation which should not
|
||||
happen on normal use)
|
||||
* add sanity-checks for ORC library as it can abort spice-server when selinux
|
||||
is in use
|
||||
* more code cleanups/improvements
|
||||
|
||||
Major Changes in 0.13.90:
|
||||
=========================
|
||||
|
||||
*** IMPORTANT ***
|
||||
0.13.90 is the first release candidate for the stable 0.14.x series. While some
|
||||
bugs might still be present, it should be reasonably stable. If you are looking
|
||||
for stability for daily use, please keep using the latest 0.12.x release.
|
||||
|
||||
* Close TCP connection early when client did not send the correct SPICE magic
|
||||
bytes: this allows VNC clients to gracefully fail when connecting to a SPICE
|
||||
port
|
||||
* Fixes for CVE-2016-9577, CVE-2016-9578 and CVE-2017-7506
|
||||
* Fix client being disconnected after migration (bug introduced in 0.13.3)
|
||||
* Add a --enable-statistics configure option
|
||||
* GLIB 2.28 is now a required build time dependency (used to be 2.22)
|
||||
* Add VP9 encoding support when GStreamer is being used and misc
|
||||
streaming/encoding improvements
|
||||
* more code refactoring/reorganization work
|
||||
|
||||
Major Changes in 0.13.3:
|
||||
========================
|
||||
|
||||
*** IMPORTANT ***
|
||||
The 0.13.x release series is an unstable release series, if you are looking for
|
||||
stability for daily use, please use the latest 0.12.x release. We are trying to
|
||||
keep the code as functional as 0.12, but regressions or bugs could still happen.
|
||||
|
||||
* Ongoing work on separating/encapsulating the existing codebase. Main
|
||||
highlight is that RedChannel/RedChannelClient have been converted to GObjects
|
||||
* Statistics code is now disabled by default, if you need it,
|
||||
-DREDS_STATISTICS must be added to CPPFLAGS when building
|
||||
* Improvements to replay utility
|
||||
* Limit (deprecated/unusud) QXLMessage size to 100,000 characters for improved
|
||||
safety
|
||||
* Build fixes on older distros (el6)
|
||||
* Improve image quality in low bitrate situation when using the
|
||||
GStreamer backend
|
||||
|
||||
Major Changes in 0.13.2:
|
||||
========================
|
||||
|
||||
*** IMPORTANT ***
|
||||
The 0.13.x release series is an unstable release series, if you are looking for
|
||||
stability for daily use, please use the latest 0.12.x release. We are trying to
|
||||
keep the code as functional as 0.12, but regressions or bugs could still happen.
|
||||
|
||||
* Fixes for various CVEs
|
||||
* Added GStreamer support to the video streaming code
|
||||
* Fix old migration bug causing migration to never end in some cases
|
||||
* Fix some vdagent-related regressions introduced in 0.13.1
|
||||
* Added lz4 compression to the spicevmc channel
|
||||
* Ongoing code cleanups
|
||||
|
||||
Major changes in 0.13.1:
|
||||
========================
|
||||
|
||||
*** IMPORTANT ***
|
||||
The 0.13.x release series is an unstable release series, if you are looking for
|
||||
stability for daily use, please use the latest 0.12.x release. We are trying to
|
||||
keep the code as functional as 0.12, but regressions or bugs could still happen.
|
||||
|
||||
* add spice_qxl_gl_scanout() spice_qxl_gl_draw_async() for local virgl support
|
||||
* spice_server_set_keepalive_timeout() has been removed in favour of
|
||||
unconditionally sending keepalive probes every 10 minutes
|
||||
* the rework started in 0.13.0 has moved forward. The global RedsState *reds
|
||||
variable has now been removed, GLib mainloop is now used for the RedWorker thread
|
||||
rather than an adhoc implementation, some core classes have been ported to
|
||||
GObject, ...
|
||||
* some crash/leak fixes in corner cases
|
||||
|
||||
Major changes in 0.13.0:
|
||||
========================
|
||||
|
||||
* Start of a large code rework to attempt to make the codebase more
|
||||
maintainable. With this first release, the huge red_worker.c file has been split
|
||||
in multiple smaller files.
|
||||
|
||||
* Added public spice_server_set_keepalive_timeout() to make it possible
|
||||
to tweak keepalive on all SPICE connection. This can prevent unwanted
|
||||
idle disconnections if proxies are used between the client and the host.
|
||||
* Fix important memory usage when the webdav channel is used
|
||||
* Do not disconnect when the client requests an unsupported compression type
|
||||
* Fix potential race condition when using multiple QXL devices
|
||||
* Fix display glitch when using XSpice
|
||||
* Improve help string for 'replay -s'
|
||||
* Fix crashes in corner cases (buggy spice-html5 + win10, vnc + SPICE port
|
||||
configured, USB webcam redirection over a slow link)
|
||||
* Fix various compilation warning when building on 32 bit machines
|
||||
* Do not build static libraries by default, this can be reenabled with
|
||||
--enable-static
|
||||
* Fix small leak in MJPEG code
|
||||
|
||||
Major changes in 0.12.6:
|
||||
========================
|
||||
* Removed spicec client code, it has been superseded by remote-viewer and other
|
||||
spice-gtk based clients
|
||||
* Unix socket support
|
||||
* LZ4 support
|
||||
* Let clients specify their preferred image compression format
|
||||
* Allow to record and replay a spice-server session
|
||||
* Fixes for CVE-2015-3247 CVE-2015-5260 and CVE-2015-5261
|
||||
* spice-protocol submodule has been removed,, spice-protocol must now be
|
||||
installed when building spice-server
|
||||
* Remove write polling in chardevs to reduce wakeups
|
||||
* Various bugs, crashes fixes, code cleanups, ...
|
||||
|
||||
Major changes in 0.12.5:
|
||||
========================
|
||||
* Added Opus support. Celt support will be obsoleted in a future release.
|
||||
* Addition of webdav channel
|
||||
* Force use of TLS 1.0 or newer for TLS connections
|
||||
* Reference manual
|
||||
* Some optimizations improving CPU use
|
||||
* Various bug fixes for race conditions, memory corruption, ... which could
|
||||
be triggered on client disconnections, migration, ... and cause spice-server
|
||||
to misbehave.
|
||||
* Portability fixes
|
||||
* Code cleanups
|
||||
|
||||
Major changes in 0.12.4:
|
||||
========================
|
||||
* log actual address spice-server binds to
|
||||
* main_channel: fix double release of migration target data (rhbz#859027)
|
||||
* red_channel: replace an assert upon threads mismatch with a warning (rhbz#823472)
|
||||
* support for filtering out agent file-xfer msgs (rhbz#961848)
|
||||
** new library export spice_server_set_agent_file_xfer
|
||||
* mjpeg encoder statistics (mjpeg_encoder_get_stats)
|
||||
* improve stream stats readability and ease of parsing
|
||||
* fix for stuck display_channel over WAN (jpeg_enabled=true) (rhbz#977998)
|
||||
* Use RING_FOREACH_SAFE and other SAFE macros (rhbz#887775)
|
||||
* Some server/tests fixes.
|
||||
|
||||
Major changes in 0.12.3:
|
||||
========================
|
||||
* monitor client bandwidth and latency.
|
||||
* dynamically adjust video stream quality based on client bandwidth & latency.
|
||||
** new SPICE_MSGC_DISPLAY_STREAM_REPORT
|
||||
** can also set SPICE_BIT_RATE environment variable to override.
|
||||
* support arbitrary latency of audio stream wrt video stream:
|
||||
** new SPICE_MSG_PLAYBACK_LATENCY
|
||||
* notify agent on client disconnection
|
||||
** new VD_AGENT_CLIENT_DISCONNECTED message
|
||||
* better support for switching from qxl to vga mode
|
||||
** new library export spice_qxl_driver_unload
|
||||
* multiple monitor support in single channel fixes.
|
||||
* stop streams before migration.
|
||||
* don't send empty volume messages.
|
||||
* Bugs fixed: rhbz#891326, rhbz#958276, rhbz#956345
|
||||
* fixes to inputs, chardev, build fixes.
|
||||
|
||||
Major changes in 0.12.2:
|
||||
========================
|
||||
* Stable Release
|
||||
* Skipped 0.12.1, it existed in git but was never released
|
||||
* spice-server now requires glib2 (like qemu does)
|
||||
* More robust ssl error and certificate handling
|
||||
* Added support for websockets
|
||||
* Tons of seamless migration bugfixes
|
||||
* Also some none seamless migration bugfixes
|
||||
|
||||
Major changes in 0.12.0:
|
||||
========================
|
||||
* Stable Release
|
||||
* support setting client monitor configuration via device
|
||||
QXLInterface::client_monitors_config
|
||||
* support notifying guest of client capabilities
|
||||
QXLInterface::set_client_capabilities
|
||||
* new capability for A8 Surface support
|
||||
* Enable build on armv6+
|
||||
* Option to quit server after first client disconnects
|
||||
spice_server_set_exit_on_disconnect
|
||||
|
||||
Major changes in 0.11.3:
|
||||
========================
|
||||
* !Development Release!
|
||||
* This entry contains all 0.11.0 .. 0.11.3 changes.
|
||||
* Support seamless migration: no loss of in transit messages. Still not
|
||||
supported for agent, smartcard and usb.
|
||||
* Support a new rendering message, Composite, for much improved linux guest
|
||||
performance.
|
||||
* Support arbitrary resolution & multiple monitors on a single display channel.
|
||||
* Improved keyboard handling under network latency with new
|
||||
SPICE_MSGC_INPUTS_KEY_SCANCODE message.
|
||||
* New libspice-server.so symbols:
|
||||
spice_server_set_seamless_migration
|
||||
spice_server_vm_stop
|
||||
spice_server_vm_start
|
||||
spice_qxl_monitors_config_async
|
||||
* New capabilities:
|
||||
SPICE_DISPLAY_CAP_COMPOSITE
|
||||
SPICE_DISPLAY_CAP_MONITORS_CONFIG
|
||||
SPICE_INPUTS_CAP_KEY_SCANCODE
|
||||
SPICE_MAIN_CAP_AGENT_CONNECTED_TOKENS
|
||||
SPICE_MAIN_CAP_SEAMLESS_MIGRATE
|
||||
* Misc:
|
||||
* char-device.c: Introducing shared flow control code for char devices
|
||||
* Enable build without client, cegui and slirp.
|
||||
|
||||
Major changes in 0.11.0:
|
||||
========================
|
||||
* !Development Release!
|
||||
* 8817549..d905a1f
|
||||
* now using git submodules: spice-common and spice-protocol.
|
||||
* New spice protocol messages: (changes in spice-protocol, here for reference)
|
||||
* SPICE_MSG_MAIN_NAME, SPICE_MSG_MAIN_UUID
|
||||
* SPICE_MSG_DISPLAY_STREAM_DATA_SIZED
|
||||
* New corresponding caps: (changes in spice-protocol, here for reference)
|
||||
* SPICE_MAIN_CAP_NAME_AND_UUID
|
||||
* SPICE_DISPLAY_CAP_SIZED_STREAM.
|
||||
* Send name & uuid to capable clients
|
||||
* add support for frames of different sizes RHBZ #813826
|
||||
* server:
|
||||
* support a pre-opened file descriptor
|
||||
* Solaris support. Now using poll instead of epoll.
|
||||
* Support IPV6 addresses in channel events RHBZ #788444
|
||||
* other fixed RHBZ#: 787669, 787678, 819484
|
||||
* spicec
|
||||
* alsa: use "default" instead of "hw:0,0"
|
||||
* volume keys support RHBZ #552539
|
||||
* other fixed RHBZ#: 78655, 804561, 641828
|
||||
* solaris, mingw & windows, 32 bit fixes.
|
||||
* enable server only build.
|
||||
* GNULIB manywarnings.m4 & warnings.m4 module added.
|
||||
* Many more bug fixes & code cleanups.
|
||||
* spice-protocol no longer external.
|
||||
* new server functions:
|
||||
+ spice_server_set_name
|
||||
+ spice_server_set_uuid
|
||||
+ spice_server_set_listen_socket_fd
|
||||
+ spice_server_is_server_mouse
|
||||
|
||||
Major changes in 0.10.1:
|
||||
========================
|
||||
* Mini header support
|
||||
* Add server API for injecting a client connection socket
|
||||
* Add Xinerama support to spicec
|
||||
* Many bugfixes / code cleanups
|
||||
* Requires spice-protocol >= 0.10.1
|
||||
|
||||
Major changes in 0.10.0:
|
||||
========================
|
||||
* 32 bit (little endian) server builds.
|
||||
* ABI compatible with 0.8.2.
|
||||
|
||||
Major changes in 0.9.2:
|
||||
=======================
|
||||
* !Development Release!
|
||||
* server: semi-seamless migration support (RHBZ 738266)
|
||||
* client: semi-seamless migration support (RHBZ 725009, 738270)
|
||||
* Various bugfixes / cleanups
|
||||
* require spice-protocol >= 0.9.1
|
||||
|
||||
Major changes in 0.9.1:
|
||||
=======================
|
||||
* !Development Release!
|
||||
* Multi-client support, disabled by default (experimental!) set the
|
||||
environment variable SPICE_DEBUG_ALLOW_MC before starting qemu to enable
|
||||
* Add support for adding generic spicevmc chardev passthrough channels
|
||||
* Add USB redirection channel (using generic spicevmc chardev passthrough)
|
||||
* Various bugfixes / cleanups
|
||||
|
||||
Major changes in 0.9.0:
|
||||
=======================
|
||||
* !Development Release!
|
||||
* volume synchronization between client and guest (client->guest only)
|
||||
* turbo-jpeg used to avoid expensive color conversion in mjpeg encoder.
|
||||
* Cleanups
|
||||
|
||||
Major changes in 0.8.2:
|
||||
=======================
|
||||
* server: sasl support (fdo bz 34795)
|
||||
* server: support guest async io
|
||||
* server: support guest suspend and hibernate
|
||||
* server: add symbol versioning to libspice-server.so
|
||||
* server: prevent running an old spice-server with a newer qemu
|
||||
* server Bug fixes (RHBZ): 714801, 713474, 674532, 653545
|
||||
* client Bug fixes (RHBZ): 712938, 710461, 673973, 667689
|
||||
* require spice-protocol >= 0.8.1
|
||||
|
||||
Major changes in 0.8.1:
|
||||
=======================
|
||||
* client: Fix handling of --smartcard-db option
|
||||
* client: Add --version option
|
||||
* spicec-x11: Work around a bug in xsel
|
||||
* spicec-x11: Don't crash on apps sending bad atoms as TARGETS
|
||||
* server: Make copy paste support configurable
|
||||
* server: Various fixes to agent <-> client data handling
|
||||
|
||||
Major changes in 0.8.0:
|
||||
=======================
|
||||
* client: exit nicely for --controller with no SPICE_XPI_SOCKET (rhbz#644292)
|
||||
* client-x11: Use _exit rather then exit on X errors (rhbz#680763)
|
||||
* client-x11: Fix keyb modifiers not syncing from guest to client (rhbz#679467)
|
||||
* server: fix segfault on migration
|
||||
|
||||
Major changes in 0.7.3:
|
||||
=======================
|
||||
* Suport building with (and requires) libcacard-0.1.2
|
||||
* Fixes for building with gcc-4.6
|
||||
* Server: Drop unnecessary X11 and alsa requires from spice-server.pc
|
||||
* Client: fix minor for old migration support
|
||||
* Client: Remove spice-client watermark (rhbz#662450)
|
||||
|
||||
Major changes in 0.7.2:
|
||||
=======================
|
||||
* cmd-line-parser: fix wrong reporting of bad argument in --bla=val case
|
||||
* Server: do not depend on libcacard and CEGUI (when enabled for the client)
|
||||
* Server: send 1 instead of 4 as topdown flag "true" value
|
||||
* Client: accept 4 as top down flag value for compatibility with older servers
|
||||
* Client: stop blinking keyboard when out of focus
|
||||
* Client: log subject-host mismatch, and raise ssl warnings to errors
|
||||
|
||||
Major changes in 0.7.1:
|
||||
=======================
|
||||
* Brown paper bag release
|
||||
* Update SPICE_SERVER_VERSION
|
||||
* Include server/tests/test_util.h in the make dist generated tarbals, so
|
||||
that they actually compile
|
||||
|
||||
Major changes in 0.7.0:
|
||||
=======================
|
||||
* Many small bugfixes to the spice client
|
||||
* Support for smartcards (CAC)
|
||||
|
||||
Major changes in 0.6.3:
|
||||
=======================
|
||||
Major changes in this release:
|
||||
* Foreign menu and controller support for the client for XPI / ActiveX
|
||||
browser plugin usage (same API as the 0.4 client)
|
||||
* Copy and paste support in the client
|
||||
* Image copy and paste support in the X client
|
||||
* Fix fullscreen mode of the X client under compiz and KDE
|
||||
* Various portability and bug fixes
|
||||
|
||||
Major changes in 0.6.2:
|
||||
=======================
|
||||
0.6.2 was skipped because a small but nasty bug was found while preparing
|
||||
the release (and it was already tagged as 0.6.2 in git).
|
||||
|
||||
Major changes in 0.6.1:
|
||||
=======================
|
||||
Major changes in this release:
|
||||
* New libspice API to handle backwards compatibility
|
||||
* Fix X crash in X client
|
||||
* Fix memory leaks and crashes
|
||||
* Portability fixes
|
||||
|
||||
Major changes in 0.6.0:
|
||||
=======================
|
||||
Major changes in this releas:
|
||||
* Various bugfixes
|
||||
* Make build work on arm7
|
||||
* Fix build for python 2.5
|
||||
* Don't allow video streams on non-primary surface
|
||||
* Fix shared memory leaks in client
|
||||
* Add some new libspice-server APIs for configuration options
|
||||
* Convert SpiceVDIPort API to generic SpiceCharDevice API
|
||||
* Add capabilities negotiation to agent
|
||||
|
||||
Major changes in 0.5.3:
|
||||
=======================
|
||||
|
||||
Major changes in this release:
|
||||
* Various changes in the network protocol to make it more efficient.
|
||||
* New commandline arguments to enable/disable jpeg and zlib-over-glz.
|
||||
* Initial work on clipboard sharing added
|
||||
* Fix color channel order for mjpegs when connecting to older spice
|
||||
server.
|
||||
|
||||
Major changes in 0.5.2:
|
||||
=======================
|
||||
|
||||
This is the first release of the unstable 0.5.x series leading up to 0.6.
|
||||
With this release the API of spice-server is considered stable, but
|
||||
the network protocol and QXL PCI ABI are still unstable.
|
||||
|
||||
The major changes compared to the 0.4 series are:
|
||||
|
||||
* New, more efficient network protocol
|
||||
* Support for offscreen surfaces in guest driver
|
||||
* New spice-server API
|
||||
* A marshalling/demarshalling system that isolates the network
|
||||
protocol parsing from the internal types
|
||||
* A PCI parsing and validation layer making it easier to
|
||||
get backwards compatibility, cleaning up the internals ans
|
||||
makes security review easier.
|
||||
* WAN support, including lossy compression using jpeg and
|
||||
zlib compression.
|
||||
* Easier to build. No more dependencies on forked versions
|
||||
of pixman and cairo. Separate module spice-protocol containing
|
||||
headers used when building drivers and qemu.
|
83
spice/README
83
spice/README
@ -1,83 +0,0 @@
|
||||
SPICE: Simple Protocol for Independent Computing Environments
|
||||
=============================================================
|
||||
|
||||
SPICE is a remote display system built for virtual environments which
|
||||
allows you to view a computing 'desktop' environment not only on the
|
||||
machine where it is running, but from anywhere on the Internet and
|
||||
from a wide variety of machine architectures.
|
||||
|
||||
Installation
|
||||
------------
|
||||
|
||||
The SPICE package uses GNU autotools, so the build install process
|
||||
follows the standard process documented in the INSTALL file. As a
|
||||
quick start you can do
|
||||
|
||||
./configure --prefix=/usr --sysconfdir=/etc \
|
||||
--localstatedir=/var --libdir=/usr/lib
|
||||
make
|
||||
sudo make install
|
||||
|
||||
Or to install into a private user specific location
|
||||
|
||||
./configure --prefix=$HOME/spice
|
||||
make
|
||||
make install
|
||||
|
||||
The following mandatory dependencies are required in order to
|
||||
build SPICE
|
||||
|
||||
Spice protocol >= 0.12.14
|
||||
Pixman >= 0.17.7
|
||||
OpenSSL
|
||||
libjpeg
|
||||
zlib
|
||||
|
||||
The following optional dependencies increase the available
|
||||
functionality
|
||||
|
||||
Cyrus-SASL
|
||||
libcacard >= 0.1.2 (Smartcard support)
|
||||
Opus >= 1.0.0 (Opus audio encoding support)
|
||||
LZ4 (LZ4 compression support)
|
||||
GStreamer >= 1.0.0
|
||||
|
||||
Communication
|
||||
-------------
|
||||
|
||||
To communicate with the development team, or to post patches
|
||||
there is a technical mailing list:
|
||||
|
||||
http://lists.freedesktop.org/mailman/listinfo/spice-devel
|
||||
|
||||
There is also a mailing list for new release announcements:
|
||||
|
||||
http://lists.freedesktop.org/archives/spice-announce/
|
||||
|
||||
To view known bugs, or report new bugs, in SPICE visit
|
||||
|
||||
https://gitlab.freedesktop.org/spice/spice/issues/new?
|
||||
|
||||
Bugs found when using an OS distribution's binary packages should
|
||||
be reported to the OS vendors' own bug tracker first.
|
||||
|
||||
The latest SPICE code can be found in GIT at:
|
||||
|
||||
https://gitlab.freedesktop.org/spice/
|
||||
|
||||
Licensing
|
||||
---------
|
||||
|
||||
SPICE is provided under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
Please see the COPYING file for the complete LGPLv2+ license
|
||||
terms, or visit <http://www.gnu.org/licenses/>.
|
||||
|
||||
Experimental Features
|
||||
---------------------
|
||||
To enable multiple client connections, set:
|
||||
SPICE_DEBUG_ALLOW_MC=1
|
||||
|
||||
-- End of readme
|
1609
spice/aclocal.m4
vendored
1609
spice/aclocal.m4
vendored
File diff suppressed because it is too large
Load Diff
@ -1,225 +0,0 @@
|
||||
#!/bin/sh
|
||||
# Print a version string.
|
||||
scriptversion=2012-12-31.23; # UTC
|
||||
|
||||
# Copyright (C) 2007-2013 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
|
||||
# the Free Software Foundation; either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# This script is derived from GIT-VERSION-GEN from GIT: http://git.or.cz/.
|
||||
# It may be run two ways:
|
||||
# - from a git repository in which the "git describe" command below
|
||||
# produces useful output (thus requiring at least one signed tag)
|
||||
# - from a non-git-repo directory containing a .tarball-version file, which
|
||||
# presumes this script is invoked like "./git-version-gen .tarball-version".
|
||||
|
||||
# In order to use intra-version strings in your project, you will need two
|
||||
# separate generated version string files:
|
||||
#
|
||||
# .tarball-version - present only in a distribution tarball, and not in
|
||||
# a checked-out repository. Created with contents that were learned at
|
||||
# the last time autoconf was run, and used by git-version-gen. Must not
|
||||
# be present in either $(srcdir) or $(builddir) for git-version-gen to
|
||||
# give accurate answers during normal development with a checked out tree,
|
||||
# but must be present in a tarball when there is no version control system.
|
||||
# Therefore, it cannot be used in any dependencies. GNUmakefile has
|
||||
# hooks to force a reconfigure at distribution time to get the value
|
||||
# correct, without penalizing normal development with extra reconfigures.
|
||||
#
|
||||
# .version - present in a checked-out repository and in a distribution
|
||||
# tarball. Usable in dependencies, particularly for files that don't
|
||||
# want to depend on config.h but do want to track version changes.
|
||||
# Delete this file prior to any autoconf run where you want to rebuild
|
||||
# files to pick up a version string change; and leave it stale to
|
||||
# minimize rebuild time after unrelated changes to configure sources.
|
||||
#
|
||||
# As with any generated file in a VC'd directory, you should add
|
||||
# /.version to .gitignore, so that you don't accidentally commit it.
|
||||
# .tarball-version is never generated in a VC'd directory, so needn't
|
||||
# be listed there.
|
||||
#
|
||||
# Use the following line in your configure.ac, so that $(VERSION) will
|
||||
# automatically be up-to-date each time configure is run (and note that
|
||||
# since configure.ac no longer includes a version string, Makefile rules
|
||||
# should not depend on configure.ac for version updates).
|
||||
#
|
||||
# AC_INIT([GNU project],
|
||||
# m4_esyscmd([build-aux/git-version-gen .tarball-version]),
|
||||
# [bug-project@example])
|
||||
#
|
||||
# Then use the following lines in your Makefile.am, so that .version
|
||||
# will be present for dependencies, and so that .version and
|
||||
# .tarball-version will exist in distribution tarballs.
|
||||
#
|
||||
# EXTRA_DIST = $(top_srcdir)/.version
|
||||
# BUILT_SOURCES = $(top_srcdir)/.version
|
||||
# $(top_srcdir)/.version:
|
||||
# echo $(VERSION) > $@-t && mv $@-t $@
|
||||
# dist-hook:
|
||||
# echo $(VERSION) > $(distdir)/.tarball-version
|
||||
|
||||
|
||||
me=$0
|
||||
|
||||
version="git-version-gen $scriptversion
|
||||
|
||||
Copyright 2011 Free Software Foundation, Inc.
|
||||
There is NO warranty. You may redistribute this software
|
||||
under the terms of the GNU General Public License.
|
||||
For more information about these matters, see the files named COPYING."
|
||||
|
||||
usage="\
|
||||
Usage: $me [OPTION]... \$srcdir/.tarball-version [TAG-NORMALIZATION-SED-SCRIPT]
|
||||
Print a version string.
|
||||
|
||||
Options:
|
||||
|
||||
--prefix prefix of git tags (default 'v')
|
||||
--fallback fallback version to use if \"git --version\" fails
|
||||
|
||||
--help display this help and exit
|
||||
--version output version information and exit
|
||||
|
||||
Running without arguments will suffice in most cases."
|
||||
|
||||
prefix=v
|
||||
fallback=
|
||||
|
||||
while test $# -gt 0; do
|
||||
case $1 in
|
||||
--help) echo "$usage"; exit 0;;
|
||||
--version) echo "$version"; exit 0;;
|
||||
--prefix) shift; prefix="$1";;
|
||||
--fallback) shift; fallback="$1";;
|
||||
-*)
|
||||
echo "$0: Unknown option '$1'." >&2
|
||||
echo "$0: Try '--help' for more information." >&2
|
||||
exit 1;;
|
||||
*)
|
||||
if test "x$tarball_version_file" = x; then
|
||||
tarball_version_file="$1"
|
||||
elif test "x$tag_sed_script" = x; then
|
||||
tag_sed_script="$1"
|
||||
else
|
||||
echo "$0: extra non-option argument '$1'." >&2
|
||||
exit 1
|
||||
fi;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
if test "x$tarball_version_file" = x; then
|
||||
echo "$usage"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
tag_sed_script="${tag_sed_script:-s/x/x/}"
|
||||
|
||||
nl='
|
||||
'
|
||||
|
||||
# Avoid meddling by environment variable of the same name.
|
||||
v=
|
||||
v_from_git=
|
||||
|
||||
# First see if there is a tarball-only version file.
|
||||
# then try "git describe", then default.
|
||||
if test -f $tarball_version_file
|
||||
then
|
||||
v=`cat $tarball_version_file` || v=
|
||||
case $v in
|
||||
*$nl*) v= ;; # reject multi-line output
|
||||
[0-9]*) ;;
|
||||
*) v= ;;
|
||||
esac
|
||||
test "x$v" = x \
|
||||
&& echo "$0: WARNING: $tarball_version_file is missing or damaged" 1>&2
|
||||
fi
|
||||
|
||||
if test "x$v" != x
|
||||
then
|
||||
: # use $v
|
||||
# Otherwise, if there is at least one git commit involving the working
|
||||
# directory, and "git describe" output looks sensible, use that to
|
||||
# derive a version string.
|
||||
elif test "`git log -1 --pretty=format:x . 2>&1`" = x \
|
||||
&& v=`git describe --abbrev=4 --match="$prefix*" HEAD 2>/dev/null \
|
||||
|| git describe --abbrev=4 HEAD 2>/dev/null` \
|
||||
&& v=`printf '%s\n' "$v" | sed "$tag_sed_script"` \
|
||||
&& case $v in
|
||||
$prefix[0-9]*) ;;
|
||||
*) (exit 1) ;;
|
||||
esac
|
||||
then
|
||||
# Is this a new git that lists number of commits since the last
|
||||
# tag or the previous older version that did not?
|
||||
# Newer: v6.10-77-g0f8faeb
|
||||
# Older: v6.10-g0f8faeb
|
||||
case $v in
|
||||
*-*-*) : git describe is okay three part flavor ;;
|
||||
*-*)
|
||||
: git describe is older two part flavor
|
||||
# Recreate the number of commits and rewrite such that the
|
||||
# result is the same as if we were using the newer version
|
||||
# of git describe.
|
||||
vtag=`echo "$v" | sed 's/-.*//'`
|
||||
commit_list=`git rev-list "$vtag"..HEAD 2>/dev/null` \
|
||||
|| { commit_list=failed;
|
||||
echo "$0: WARNING: git rev-list failed" 1>&2; }
|
||||
numcommits=`echo "$commit_list" | wc -l`
|
||||
v=`echo "$v" | sed "s/\(.*\)-\(.*\)/\1-$numcommits-\2/"`;
|
||||
test "$commit_list" = failed && v=UNKNOWN
|
||||
;;
|
||||
esac
|
||||
|
||||
# Change the first '-' to a '.', so version-comparing tools work properly.
|
||||
# Remove the "g" in git describe's output string, to save a byte.
|
||||
v=`echo "$v" | sed 's/-/./;s/\(.*\)-g/\1-/'`;
|
||||
v_from_git=1
|
||||
elif test "x$fallback" = x || git --version >/dev/null 2>&1; then
|
||||
v=UNKNOWN
|
||||
else
|
||||
v=$fallback
|
||||
fi
|
||||
|
||||
v=`echo "$v" |sed "s/^$prefix//"`
|
||||
|
||||
# Test whether to append the "-dirty" suffix only if the version
|
||||
# string we're using came from git. I.e., skip the test if it's "UNKNOWN"
|
||||
# or if it came from .tarball-version.
|
||||
if test "x$v_from_git" != x; then
|
||||
# Don't declare a version "dirty" merely because a time stamp has changed.
|
||||
git update-index --refresh > /dev/null 2>&1
|
||||
|
||||
dirty=`exec 2>/dev/null;git diff-index --name-only HEAD` || dirty=
|
||||
case "$dirty" in
|
||||
'') ;;
|
||||
*) # Append the suffix only if there isn't one already.
|
||||
case $v in
|
||||
*-dirty) ;;
|
||||
*) v="$v-dirty" ;;
|
||||
esac ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# Omit the trailing newline, so that m4_esyscmd can use the result directly.
|
||||
echo "$v" | tr -d "$nl"
|
||||
|
||||
# Local variables:
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-time-zone: "UTC"
|
||||
# time-stamp-end: "; # UTC"
|
||||
# End:
|
348
spice/compile
348
spice/compile
@ -1,348 +0,0 @@
|
||||
#!/bin/sh
|
||||
# Wrapper for compilers which do not understand '-c -o'.
|
||||
|
||||
scriptversion=2016-01-11.22; # UTC
|
||||
|
||||
# Copyright (C) 1999-2017 Free Software Foundation, Inc.
|
||||
# Written by Tom Tromey <tromey@cygnus.com>.
|
||||
#
|
||||
# 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
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
# This file is maintained in Automake, please report
|
||||
# bugs to <bug-automake@gnu.org> or send patches to
|
||||
# <automake-patches@gnu.org>.
|
||||
|
||||
nl='
|
||||
'
|
||||
|
||||
# We need space, tab and new line, in precisely that order. Quoting is
|
||||
# there to prevent tools from complaining about whitespace usage.
|
||||
IFS=" "" $nl"
|
||||
|
||||
file_conv=
|
||||
|
||||
# func_file_conv build_file lazy
|
||||
# Convert a $build file to $host form and store it in $file
|
||||
# Currently only supports Windows hosts. If the determined conversion
|
||||
# type is listed in (the comma separated) LAZY, no conversion will
|
||||
# take place.
|
||||
func_file_conv ()
|
||||
{
|
||||
file=$1
|
||||
case $file in
|
||||
/ | /[!/]*) # absolute file, and not a UNC file
|
||||
if test -z "$file_conv"; then
|
||||
# lazily determine how to convert abs files
|
||||
case `uname -s` in
|
||||
MINGW*)
|
||||
file_conv=mingw
|
||||
;;
|
||||
CYGWIN*)
|
||||
file_conv=cygwin
|
||||
;;
|
||||
*)
|
||||
file_conv=wine
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
case $file_conv/,$2, in
|
||||
*,$file_conv,*)
|
||||
;;
|
||||
mingw/*)
|
||||
file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
|
||||
;;
|
||||
cygwin/*)
|
||||
file=`cygpath -m "$file" || echo "$file"`
|
||||
;;
|
||||
wine/*)
|
||||
file=`winepath -w "$file" || echo "$file"`
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# func_cl_dashL linkdir
|
||||
# Make cl look for libraries in LINKDIR
|
||||
func_cl_dashL ()
|
||||
{
|
||||
func_file_conv "$1"
|
||||
if test -z "$lib_path"; then
|
||||
lib_path=$file
|
||||
else
|
||||
lib_path="$lib_path;$file"
|
||||
fi
|
||||
linker_opts="$linker_opts -LIBPATH:$file"
|
||||
}
|
||||
|
||||
# func_cl_dashl library
|
||||
# Do a library search-path lookup for cl
|
||||
func_cl_dashl ()
|
||||
{
|
||||
lib=$1
|
||||
found=no
|
||||
save_IFS=$IFS
|
||||
IFS=';'
|
||||
for dir in $lib_path $LIB
|
||||
do
|
||||
IFS=$save_IFS
|
||||
if $shared && test -f "$dir/$lib.dll.lib"; then
|
||||
found=yes
|
||||
lib=$dir/$lib.dll.lib
|
||||
break
|
||||
fi
|
||||
if test -f "$dir/$lib.lib"; then
|
||||
found=yes
|
||||
lib=$dir/$lib.lib
|
||||
break
|
||||
fi
|
||||
if test -f "$dir/lib$lib.a"; then
|
||||
found=yes
|
||||
lib=$dir/lib$lib.a
|
||||
break
|
||||
fi
|
||||
done
|
||||
IFS=$save_IFS
|
||||
|
||||
if test "$found" != yes; then
|
||||
lib=$lib.lib
|
||||
fi
|
||||
}
|
||||
|
||||
# func_cl_wrapper cl arg...
|
||||
# Adjust compile command to suit cl
|
||||
func_cl_wrapper ()
|
||||
{
|
||||
# Assume a capable shell
|
||||
lib_path=
|
||||
shared=:
|
||||
linker_opts=
|
||||
for arg
|
||||
do
|
||||
if test -n "$eat"; then
|
||||
eat=
|
||||
else
|
||||
case $1 in
|
||||
-o)
|
||||
# configure might choose to run compile as 'compile cc -o foo foo.c'.
|
||||
eat=1
|
||||
case $2 in
|
||||
*.o | *.[oO][bB][jJ])
|
||||
func_file_conv "$2"
|
||||
set x "$@" -Fo"$file"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
func_file_conv "$2"
|
||||
set x "$@" -Fe"$file"
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
-I)
|
||||
eat=1
|
||||
func_file_conv "$2" mingw
|
||||
set x "$@" -I"$file"
|
||||
shift
|
||||
;;
|
||||
-I*)
|
||||
func_file_conv "${1#-I}" mingw
|
||||
set x "$@" -I"$file"
|
||||
shift
|
||||
;;
|
||||
-l)
|
||||
eat=1
|
||||
func_cl_dashl "$2"
|
||||
set x "$@" "$lib"
|
||||
shift
|
||||
;;
|
||||
-l*)
|
||||
func_cl_dashl "${1#-l}"
|
||||
set x "$@" "$lib"
|
||||
shift
|
||||
;;
|
||||
-L)
|
||||
eat=1
|
||||
func_cl_dashL "$2"
|
||||
;;
|
||||
-L*)
|
||||
func_cl_dashL "${1#-L}"
|
||||
;;
|
||||
-static)
|
||||
shared=false
|
||||
;;
|
||||
-Wl,*)
|
||||
arg=${1#-Wl,}
|
||||
save_ifs="$IFS"; IFS=','
|
||||
for flag in $arg; do
|
||||
IFS="$save_ifs"
|
||||
linker_opts="$linker_opts $flag"
|
||||
done
|
||||
IFS="$save_ifs"
|
||||
;;
|
||||
-Xlinker)
|
||||
eat=1
|
||||
linker_opts="$linker_opts $2"
|
||||
;;
|
||||
-*)
|
||||
set x "$@" "$1"
|
||||
shift
|
||||
;;
|
||||
*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
|
||||
func_file_conv "$1"
|
||||
set x "$@" -Tp"$file"
|
||||
shift
|
||||
;;
|
||||
*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
|
||||
func_file_conv "$1" mingw
|
||||
set x "$@" "$file"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set x "$@" "$1"
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
shift
|
||||
done
|
||||
if test -n "$linker_opts"; then
|
||||
linker_opts="-link$linker_opts"
|
||||
fi
|
||||
exec "$@" $linker_opts
|
||||
exit 1
|
||||
}
|
||||
|
||||
eat=
|
||||
|
||||
case $1 in
|
||||
'')
|
||||
echo "$0: No command. Try '$0 --help' for more information." 1>&2
|
||||
exit 1;
|
||||
;;
|
||||
-h | --h*)
|
||||
cat <<\EOF
|
||||
Usage: compile [--help] [--version] PROGRAM [ARGS]
|
||||
|
||||
Wrapper for compilers which do not understand '-c -o'.
|
||||
Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
|
||||
arguments, and rename the output as expected.
|
||||
|
||||
If you are trying to build a whole package this is not the
|
||||
right script to run: please start by reading the file 'INSTALL'.
|
||||
|
||||
Report bugs to <bug-automake@gnu.org>.
|
||||
EOF
|
||||
exit $?
|
||||
;;
|
||||
-v | --v*)
|
||||
echo "compile $scriptversion"
|
||||
exit $?
|
||||
;;
|
||||
cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \
|
||||
icl | *[/\\]icl | icl.exe | *[/\\]icl.exe )
|
||||
func_cl_wrapper "$@" # Doesn't return...
|
||||
;;
|
||||
esac
|
||||
|
||||
ofile=
|
||||
cfile=
|
||||
|
||||
for arg
|
||||
do
|
||||
if test -n "$eat"; then
|
||||
eat=
|
||||
else
|
||||
case $1 in
|
||||
-o)
|
||||
# configure might choose to run compile as 'compile cc -o foo foo.c'.
|
||||
# So we strip '-o arg' only if arg is an object.
|
||||
eat=1
|
||||
case $2 in
|
||||
*.o | *.obj)
|
||||
ofile=$2
|
||||
;;
|
||||
*)
|
||||
set x "$@" -o "$2"
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
*.c)
|
||||
cfile=$1
|
||||
set x "$@" "$1"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set x "$@" "$1"
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
shift
|
||||
done
|
||||
|
||||
if test -z "$ofile" || test -z "$cfile"; then
|
||||
# If no '-o' option was seen then we might have been invoked from a
|
||||
# pattern rule where we don't need one. That is ok -- this is a
|
||||
# normal compilation that the losing compiler can handle. If no
|
||||
# '.c' file was seen then we are probably linking. That is also
|
||||
# ok.
|
||||
exec "$@"
|
||||
fi
|
||||
|
||||
# Name of file we expect compiler to create.
|
||||
cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
|
||||
|
||||
# Create the lock directory.
|
||||
# Note: use '[/\\:.-]' here to ensure that we don't use the same name
|
||||
# that we are using for the .o file. Also, base the name on the expected
|
||||
# object file name, since that is what matters with a parallel build.
|
||||
lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
|
||||
while true; do
|
||||
if mkdir "$lockdir" >/dev/null 2>&1; then
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
# FIXME: race condition here if user kills between mkdir and trap.
|
||||
trap "rmdir '$lockdir'; exit 1" 1 2 15
|
||||
|
||||
# Run the compile.
|
||||
"$@"
|
||||
ret=$?
|
||||
|
||||
if test -f "$cofile"; then
|
||||
test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
|
||||
elif test -f "${cofile}bj"; then
|
||||
test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
|
||||
fi
|
||||
|
||||
rmdir "$lockdir"
|
||||
exit $ret
|
||||
|
||||
# Local Variables:
|
||||
# mode: shell-script
|
||||
# sh-indentation: 2
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-time-zone: "UTC0"
|
||||
# time-stamp-end: "; # UTC"
|
||||
# End:
|
1476
spice/config.guess
vendored
1476
spice/config.guess
vendored
File diff suppressed because it is too large
Load Diff
@ -1,156 +0,0 @@
|
||||
/* config.h.in. Generated from configure.ac by autoheader. */
|
||||
|
||||
/* Define if building universal (internal helper macro) */
|
||||
#undef AC_APPLE_UNIVERSAL_BUILD
|
||||
|
||||
/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
|
||||
systems. This function is required for `alloca.c' support on those systems.
|
||||
*/
|
||||
#undef CRAY_STACKSEG_END
|
||||
|
||||
/* Define to 1 if using `alloca.c'. */
|
||||
#undef C_ALLOCA
|
||||
|
||||
/* Enable extra checks on code */
|
||||
#undef ENABLE_EXTRA_CHECKS
|
||||
|
||||
/* Enable compile-time and run-time bounds-checking, and some warnings. */
|
||||
#if !defined _FORTIFY_SOURCE && defined __OPTIMIZE__ && __OPTIMIZE__
|
||||
# define _FORTIFY_SOURCE 2
|
||||
#endif
|
||||
|
||||
|
||||
/* Define to 1 if you have `alloca', as a function or macro. */
|
||||
#undef HAVE_ALLOCA
|
||||
|
||||
/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
|
||||
*/
|
||||
#undef HAVE_ALLOCA_H
|
||||
|
||||
/* Define if we have celt051 codec */
|
||||
#undef HAVE_CELT051
|
||||
|
||||
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||
#undef HAVE_DLFCN_H
|
||||
|
||||
/* Define to 1 if you have the <execinfo.h> header file. */
|
||||
#undef HAVE_EXECINFO_H
|
||||
|
||||
/* Define if supporting GStreamer 0.10 */
|
||||
#undef HAVE_GSTREAMER_0_10
|
||||
|
||||
/* Define if supporting GStreamer 1.0 */
|
||||
#undef HAVE_GSTREAMER_1_0
|
||||
|
||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||
#undef HAVE_INTTYPES_H
|
||||
|
||||
/* Define to 1 if you have the <linux/sockios.h> header file. */
|
||||
#undef HAVE_LINUX_SOCKIOS_H
|
||||
|
||||
/* Define to 1 if you have the `LZ4_compress_fast_continue' function. */
|
||||
#undef HAVE_LZ4_COMPRESS_FAST_CONTINUE
|
||||
|
||||
/* Define to 1 if you have the <memory.h> header file. */
|
||||
#undef HAVE_MEMORY_H
|
||||
|
||||
/* Define to 1 if you have the <pthread_np.h> header file. */
|
||||
#undef HAVE_PTHREAD_NP_H
|
||||
|
||||
/* whether Cyrus SASL is available for authentication */
|
||||
#undef HAVE_SASL
|
||||
|
||||
/* Define to 1 if you have the <stdint.h> header file. */
|
||||
#undef HAVE_STDINT_H
|
||||
|
||||
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||
#undef HAVE_STDLIB_H
|
||||
|
||||
/* Define to 1 if you have the <strings.h> header file. */
|
||||
#undef HAVE_STRINGS_H
|
||||
|
||||
/* Define to 1 if you have the <string.h> header file. */
|
||||
#undef HAVE_STRING_H
|
||||
|
||||
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||
#undef HAVE_SYS_STAT_H
|
||||
|
||||
/* Define to 1 if you have the <sys/time.h> header file. */
|
||||
#undef HAVE_SYS_TIME_H
|
||||
|
||||
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||
#undef HAVE_SYS_TYPES_H
|
||||
|
||||
/* Define to 1 if <netinet/tcp.h> has a TCP_KEEPIDLE definition */
|
||||
#undef HAVE_TCP_KEEPIDLE
|
||||
|
||||
/* Define to 1 if you have the <unistd.h> header file. */
|
||||
#undef HAVE_UNISTD_H
|
||||
|
||||
/* Define to the sub-directory where libtool stores uninstalled libraries. */
|
||||
#undef LT_OBJDIR
|
||||
|
||||
/* Name of package */
|
||||
#undef PACKAGE
|
||||
|
||||
/* Define to the address where bug reports for this package should be sent. */
|
||||
#undef PACKAGE_BUGREPORT
|
||||
|
||||
/* Define to the full name of this package. */
|
||||
#undef PACKAGE_NAME
|
||||
|
||||
/* Define to the full name and version of this package. */
|
||||
#undef PACKAGE_STRING
|
||||
|
||||
/* Define to the one symbol short name of this package. */
|
||||
#undef PACKAGE_TARNAME
|
||||
|
||||
/* Define to the home page for this package. */
|
||||
#undef PACKAGE_URL
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#undef PACKAGE_VERSION
|
||||
|
||||
/* Enable SPICE statistics */
|
||||
#undef RED_STATISTICS
|
||||
|
||||
/* Enable more type safe version of SPICE_CONTAINEROF */
|
||||
#undef SPICE_USE_SAFER_CONTAINEROF
|
||||
|
||||
/* If using the C implementation of alloca, define if you know the
|
||||
direction of stack growth for your system; otherwise it will be
|
||||
automatically deduced at runtime.
|
||||
STACK_DIRECTION > 0 => grows toward higher addresses
|
||||
STACK_DIRECTION < 0 => grows toward lower addresses
|
||||
STACK_DIRECTION = 0 => direction of growth unknown */
|
||||
#undef STACK_DIRECTION
|
||||
|
||||
/* Define to 1 if you have the ANSI C header files. */
|
||||
#undef STDC_HEADERS
|
||||
|
||||
/* Define to build with lz4 support */
|
||||
#undef USE_LZ4
|
||||
|
||||
/* Define if supporting smartcard proxying */
|
||||
#undef USE_SMARTCARD
|
||||
|
||||
/* Define if supporting smartcard proxying without libcacard.h */
|
||||
#undef USE_SMARTCARD_012
|
||||
|
||||
/* Version number of package */
|
||||
#undef VERSION
|
||||
|
||||
/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
|
||||
significant byte first (like Motorola and SPARC, unlike Intel). */
|
||||
#if defined AC_APPLE_UNIVERSAL_BUILD
|
||||
# if defined __BIG_ENDIAN__
|
||||
# define WORDS_BIGENDIAN 1
|
||||
# endif
|
||||
#else
|
||||
# ifndef WORDS_BIGENDIAN
|
||||
# undef WORDS_BIGENDIAN
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* Define to `unsigned int' if <sys/types.h> does not define. */
|
||||
#undef size_t
|
1836
spice/config.sub
vendored
1836
spice/config.sub
vendored
File diff suppressed because it is too large
Load Diff
19484
spice/configure
vendored
19484
spice/configure
vendored
File diff suppressed because it is too large
Load Diff
@ -1,309 +0,0 @@
|
||||
AC_PREREQ([2.57])
|
||||
|
||||
# Follow the libtool manual for the so version:
|
||||
# http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
|
||||
# - If the library source code has changed at all since the last update,
|
||||
# then increment revision (‘c:r:a’ becomes ‘c:r+1:a’).
|
||||
# - If any interfaces have been added, removed, or changed since the last update,
|
||||
# increment current, and set revision to 0.
|
||||
# - If any interfaces have been added since the last public release,
|
||||
# then increment age.
|
||||
# - If any interfaces have been removed or changed since the last public release,
|
||||
# then set age to 0.
|
||||
#
|
||||
dnl TODO see server/spice-char.h TODO comment for API breakage
|
||||
m4_define([SPICE_CURRENT], [13])
|
||||
m4_define([SPICE_REVISION], [5])
|
||||
m4_define([SPICE_AGE], [12])
|
||||
|
||||
AC_INIT(spice, [m4_esyscmd(build-aux/git-version-gen .tarball-version)],
|
||||
[spice-devel@lists.freedesktop.org], spice)
|
||||
|
||||
major=`echo $PACKAGE_VERSION | cut -d. -f1`
|
||||
minor=`echo $PACKAGE_VERSION | cut -d. -f2`
|
||||
micro=`echo $PACKAGE_VERSION | cut -d. -f3`
|
||||
git=`echo $PACKAGE_VERSION | cut -d. -f4`
|
||||
if test x"$git" != x ; then
|
||||
micro=$(($micro+1))
|
||||
fi
|
||||
SPICE_SERVER_VERSION=`printf "0x%02x%02x%02x" $major $minor $micro`
|
||||
AC_SUBST(SPICE_SERVER_VERSION)
|
||||
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
m4_include([subprojects/spice-common/m4/spice-deps.m4])
|
||||
AM_CONFIG_HEADER([config.h])
|
||||
AC_CONFIG_AUX_DIR(.)
|
||||
|
||||
AM_INIT_AUTOMAKE([dist-bzip2 no-dist-gzip subdir-objects])
|
||||
AM_MAINTAINER_MODE
|
||||
|
||||
AC_PROG_CC
|
||||
AC_PROG_CC_C99
|
||||
if test x"$ac_cv_prog_cc_c99" = xno; then
|
||||
AC_MSG_ERROR([C99 compiler is required.])
|
||||
fi
|
||||
AC_PROG_INSTALL
|
||||
AC_CANONICAL_HOST
|
||||
LT_INIT([disable-static])
|
||||
AM_PROG_CC_C_O
|
||||
AC_C_BIGENDIAN
|
||||
PKG_PROG_PKG_CONFIG
|
||||
|
||||
AC_CHECK_HEADERS([sys/time.h execinfo.h linux/sockios.h pthread_np.h])
|
||||
AC_CHECK_DECL([TCP_KEEPIDLE], [have_tcp_keepidle="yes"],,
|
||||
[#include <netinet/tcp.h>])
|
||||
AS_IF([test "x$have_tcp_keepidle" = "xyes"],
|
||||
[AC_DEFINE([HAVE_TCP_KEEPIDLE],1,[Define to 1 if <netinet/tcp.h> has a TCP_KEEPIDLE definition])],
|
||||
)
|
||||
AC_FUNC_ALLOCA
|
||||
|
||||
SPICE_LT_VERSION=m4_format("%d:%d:%d", SPICE_CURRENT, SPICE_REVISION, SPICE_AGE)
|
||||
AC_SUBST(SPICE_LT_VERSION)
|
||||
|
||||
# Check for the CPU we are using
|
||||
case $host_cpu in
|
||||
x86_64)
|
||||
;;
|
||||
*)
|
||||
SPICE_WARNING([spice-server on non-x86_64 architectures has not been extensively tested])
|
||||
esac
|
||||
|
||||
dnl =========================================================================
|
||||
dnl Check optional features
|
||||
SPICE_CHECK_SMARTCARD
|
||||
SPICE_EXTRA_CHECKS
|
||||
|
||||
AC_ARG_ENABLE(gstreamer,
|
||||
AS_HELP_STRING([--enable-gstreamer=@<:@auto/0.10/1.0/yes/no@:>@],
|
||||
[Enable GStreamer support]),,
|
||||
[enable_gstreamer="auto"])
|
||||
|
||||
if test "x$enable_gstreamer" != "xno" && test "x$enable_gstreamer" != "x0.10"; then
|
||||
SPICE_CHECK_GSTREAMER(GSTREAMER_1_0, 1.0, [gstreamer-1.0 gstreamer-base-1.0 gstreamer-app-1.0 gstreamer-video-1.0],
|
||||
[enable_gstreamer="1.0"
|
||||
SPICE_CHECK_GSTREAMER_ELEMENTS($GST_INSPECT_1_0, [gst-plugins-base 1.0], [appsrc videoconvert appsink])
|
||||
SPICE_CHECK_GSTREAMER_ELEMENTS($GST_INSPECT_1_0, [gstreamer-libav 1.0], [avenc_mjpeg])
|
||||
SPICE_CHECK_GSTREAMER_ELEMENTS($GST_INSPECT_1_0, [gst-plugins-good 1.0], [vp8enc vp9enc])
|
||||
SPICE_CHECK_GSTREAMER_ELEMENTS($GST_INSPECT_1_0, [gst-plugins-ugly 1.0], [x264enc])
|
||||
],
|
||||
[if test "x$enable_gstreamer" = "x1.0"; then
|
||||
AC_MSG_ERROR([GStreamer 1.0 support requested but not found. You may set GSTREAMER_1_0_CFLAGS and GSTREAMER_1_0_LIBS to avoid the need to call pkg-config.])
|
||||
fi
|
||||
])
|
||||
fi
|
||||
|
||||
if test "x$enable_gstreamer" != "xno" && test "x$enable_gstreamer" != "x1.0"; then
|
||||
SPICE_CHECK_GSTREAMER(GSTREAMER_0_10, 0.10, [gstreamer-0.10 gstreamer-base-0.10 gstreamer-app-0.10 gstreamer-video-0.10],
|
||||
[enable_gstreamer="0.10"
|
||||
SPICE_CHECK_GSTREAMER_ELEMENTS($GST_INSPECT_0_10, [gst-plugins-base 0.10], [appsrc appsink])
|
||||
SPICE_CHECK_GSTREAMER_ELEMENTS($GST_INSPECT_0_10, [gstreamer-ffmpeg 0.10], [ffmpegcolorspace ffenc_mjpeg])
|
||||
SPICE_CHECK_GSTREAMER_ELEMENTS($GST_INSPECT_0_10, [gst-plugins-bad 0.10], [vp8enc])
|
||||
SPICE_CHECK_GSTREAMER_ELEMENTS($GST_INSPECT_0_10, [gst-plugins-ugly 0.10], [x264enc])
|
||||
],
|
||||
[if test "x$enable_gstreamer" = "x0.10"; then
|
||||
AC_MSG_ERROR([GStreamer 0.10 support requested but not found. You may set GSTREAMER_0_10_CFLAGS and GSTREAMER_0_10_LIBS to avoid the need to call pkg-config.])
|
||||
fi
|
||||
])
|
||||
fi
|
||||
AM_CONDITIONAL(HAVE_GSTREAMER, test "x$have_gstreamer_0_10" = "xyes" || test "x$have_gstreamer_1_0" = "xyes")
|
||||
AM_CONDITIONAL(HAVE_GSTREAMER_1_0, test "x$have_gstreamer_1_0" = "xyes")
|
||||
|
||||
AS_IF([test "x$enable_gstreamer" = "xyes"],
|
||||
[AC_MSG_ERROR("GStreamer support requested but not found")],
|
||||
[test "x$enable_gstreamer" = "xauto"],
|
||||
[enable_gstreamer="no"
|
||||
])
|
||||
AS_IF([test x"$missing_gstreamer_elements" = xyes],
|
||||
[SPICE_WARNING([The GStreamer video encoder can be built but may not work.])
|
||||
])
|
||||
|
||||
if test "x$have_gstreamer_0_10" = "xyes" || test "x$have_gstreamer_1_0" = "xyes"; then
|
||||
PKG_CHECK_MODULES(ORC, orc-0.4)
|
||||
AC_SUBST(ORC_CFLAGS)
|
||||
AC_SUBST(ORC_LIBS)
|
||||
fi
|
||||
|
||||
dnl Check for the presence of Valgrind and do the plumbing to allow
|
||||
dnl the running of "make check-valgrind".
|
||||
AX_VALGRIND_DFLT(memcheck, on)
|
||||
AX_VALGRIND_DFLT(helgrind, off)
|
||||
AX_VALGRIND_DFLT(drd, off)
|
||||
AX_VALGRIND_DFLT(sgcheck, off)
|
||||
|
||||
AX_VALGRIND_CHECK
|
||||
|
||||
SPICE_CHECK_LZ4
|
||||
SPICE_CHECK_SASL
|
||||
AM_CONDITIONAL(HAVE_SASL, test "x$have_sasl" = "xyes")
|
||||
|
||||
dnl =========================================================================
|
||||
dnl Check deps
|
||||
AC_CONFIG_SUBDIRS([subprojects/spice-common])
|
||||
COMMON_CFLAGS='-I ${top_srcdir}/subprojects/spice-common/ -I ${top_builddir}/subprojects/spice-common/'
|
||||
COMMON_CFLAGS="$COMMON_CFLAGS -DG_LOG_DOMAIN=\\\"Spice\\\""
|
||||
AC_SUBST(COMMON_CFLAGS)
|
||||
|
||||
SPICE_COMMON_DIR='${top_builddir}/subprojects/spice-common'
|
||||
AC_SUBST(SPICE_COMMON_DIR)
|
||||
|
||||
AC_CHECK_LIBM
|
||||
AC_SUBST(LIBM)
|
||||
|
||||
AC_CHECK_LIB(rt, clock_gettime, LIBRT="-lrt")
|
||||
AC_SUBST(LIBRT)
|
||||
|
||||
AS_VAR_APPEND([SPICE_NONPKGCONFIG_LIBS], [" -pthread $LIBM $LIBRT"])
|
||||
|
||||
SPICE_REQUIRES=""
|
||||
|
||||
AS_IF([test x"$have_smartcard" = "xyes"], [
|
||||
AS_VAR_APPEND([SPICE_REQUIRES], [" libcacard >= 0.1.2"])
|
||||
])
|
||||
|
||||
SPICE_PROTOCOL_MIN_VER=0.12.14
|
||||
PKG_CHECK_MODULES([SPICE_PROTOCOL], [spice-protocol >= $SPICE_PROTOCOL_MIN_VER])
|
||||
AC_SUBST([SPICE_PROTOCOL_MIN_VER])
|
||||
|
||||
GLIB2_REQUIRED=2.32
|
||||
GLIB2_ENCODED_VERSION="GLIB_VERSION_2_32"
|
||||
PKG_CHECK_MODULES([GLIB2], [glib-2.0 >= $GLIB2_REQUIRED gio-2.0 >= $GLIB2_REQUIRED])
|
||||
GLIB2_CFLAGS="$GLIB2_CFLAGS -DGLIB_VERSION_MIN_REQUIRED=$GLIB2_ENCODED_VERSION \
|
||||
-DGLIB_VERSION_MAX_ALLOWED=$GLIB2_ENCODED_VERSION"
|
||||
AS_VAR_APPEND([SPICE_REQUIRES], [" glib-2.0 >= $GLIB2_REQUIRED gio-2.0 >= $GLIB2_REQUIRED"])
|
||||
|
||||
PKG_CHECK_MODULES([GOBJECT2], [gobject-2.0 >= $GLIB2_REQUIRED])
|
||||
AS_VAR_APPEND([SPICE_REQUIRES], [" gobject-2.0 >= $GLIB2_REQUIRED"])
|
||||
|
||||
#used only by tests
|
||||
PKG_CHECK_MODULES([GIO_UNIX], [gio-unix-2.0 >= $GLIB2_REQUIRED])
|
||||
|
||||
PIXMAN_REQUIRED=0.17.7
|
||||
PKG_CHECK_MODULES(PIXMAN, pixman-1 >= $PIXMAN_REQUIRED)
|
||||
AC_SUBST(PIXMAN_CFLAGS)
|
||||
AC_SUBST(PIXMAN_LIBS)
|
||||
AS_VAR_APPEND([SPICE_REQUIRES], [" pixman-1 >= $PIXMAN_REQUIRED"])
|
||||
|
||||
SPICE_CHECK_CELT051
|
||||
|
||||
PKG_CHECK_MODULES(SSL, openssl >= 1.0.0)
|
||||
AC_SUBST(SSL_CFLAGS)
|
||||
AC_SUBST(SSL_LIBS)
|
||||
AS_VAR_APPEND([SPICE_REQUIRES], [" openssl"])
|
||||
|
||||
AC_CHECK_LIB(jpeg, jpeg_destroy_decompress,
|
||||
AC_MSG_CHECKING([for jpeglib.h])
|
||||
AC_TRY_CPP(
|
||||
[#include <stdio.h>
|
||||
#undef PACKAGE
|
||||
#undef VERSION
|
||||
#undef HAVE_STDLIB_H
|
||||
#include <jpeglib.h>],
|
||||
JPEG_LIBS='-ljpeg'
|
||||
AC_MSG_RESULT($jpeg_ok),
|
||||
AC_MSG_ERROR([jpeglib.h not found])),
|
||||
AC_MSG_ERROR([libjpeg not found]))
|
||||
AC_SUBST(JPEG_LIBS)
|
||||
|
||||
AC_CHECK_LIB(z, deflate, Z_LIBS='-lz', AC_MSG_ERROR([zlib not found]))
|
||||
AC_SUBST(Z_LIBS)
|
||||
|
||||
|
||||
AC_ARG_ENABLE([manual],
|
||||
AS_HELP_STRING([--enable-manual=@<:@auto/yes/no@:>@],
|
||||
[Build SPICE manual]),
|
||||
[],
|
||||
[enable_manual="auto"])
|
||||
if test "x$enable_manual" != "xno"; then
|
||||
AC_PATH_PROG([ASCIIDOC], [asciidoc])
|
||||
AS_IF([test -z "$ASCIIDOC" && test "x$enable_manual" = "xyes"],
|
||||
[AC_MSG_ERROR([asciidoc is missing and build of manual was requested])])
|
||||
AC_PATH_PROG([A2X], [a2x])
|
||||
AS_IF([test -z "$A2X" && test "x$enable_manual" = "xyes"],
|
||||
[AC_MSG_ERROR([a2x is missing and build of manual was requested])])
|
||||
fi
|
||||
AS_IF([test -n "$ASCIIDOC"], [have_asciidoc=yes], [have_asciidoc=no])
|
||||
AM_CONDITIONAL([BUILD_MANUAL], [test -n "$ASCIIDOC" || test -n "$A2X"])
|
||||
AM_CONDITIONAL([BUILD_HTML_MANUAL], [test -n "$ASCIIDOC"])
|
||||
AM_CONDITIONAL([BUILD_CHUNKED_MANUAL], [test -n "$A2X"])
|
||||
|
||||
AC_ARG_ENABLE([statistics],
|
||||
AS_HELP_STRING([--enable-statistics=@<:@yes/no@:>@],
|
||||
[Build SPICE with statistic code enabled @<:@default=no@:>@]))
|
||||
AS_IF([test "$enable_statistics" = "yes"],
|
||||
[AC_DEFINE([RED_STATISTICS], [1], [Enable SPICE statistics])])
|
||||
|
||||
dnl ===========================================================================
|
||||
dnl check compiler flags
|
||||
|
||||
SPICE_COMPILE_WARNINGS
|
||||
LIBVIRT_LINKER_RELRO
|
||||
LIBVIRT_LINKER_NO_INDIRECT
|
||||
|
||||
AC_SUBST(WARN_CFLAGS)
|
||||
|
||||
dnl =========================================================================
|
||||
dnl -fvisibility stuff
|
||||
|
||||
have_gcc4=no
|
||||
AC_MSG_CHECKING(for -fvisibility)
|
||||
AC_COMPILE_IFELSE([AC_LANG_SOURCE([
|
||||
#if defined(__GNUC__) && (__GNUC__ >= 4)
|
||||
#else
|
||||
error Need GCC 4.0 for visibility
|
||||
#endif
|
||||
int main () { return 0; }
|
||||
])], have_gcc4=yes)
|
||||
|
||||
if test "x$have_gcc4" = "xyes" && test ! "$os_win32" = "yes" ; then
|
||||
VISIBILITY_HIDDEN_CFLAGS="-fvisibility=hidden"
|
||||
fi
|
||||
AC_MSG_RESULT($have_gcc4)
|
||||
AC_SUBST(VISIBILITY_HIDDEN_CFLAGS)
|
||||
|
||||
dnl ensure linker supports ---version-script option before using it
|
||||
AC_CACHE_CHECK([if -Wl,--version-script works], [spice_cv_ld_version_script],
|
||||
[save_LDFLAGS="$LDFLAGS"
|
||||
LDFLAGS="$LDFLAGS -Wl,--version-script=$srcdir/server/spice-server.syms"
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
|
||||
[spice_cv_ld_version_script=yes], [spice_cv_ld_version_script=no])
|
||||
LDFLAGS="$save_LDFLAGS"])
|
||||
AM_CONDITIONAL([HAVE_LD_VERSION_SCRIPT],
|
||||
[test x"$spice_cv_ld_version_script" = xyes])
|
||||
|
||||
AC_DEFINE([SPICE_USE_SAFER_CONTAINEROF], [1], [Enable more type safe version of SPICE_CONTAINEROF])
|
||||
|
||||
AC_SUBST(SPICE_REQUIRES)
|
||||
AC_SUBST(SPICE_NONPKGCONFIG_CFLAGS)
|
||||
AC_SUBST(SPICE_NONPKGCONFIG_LIBS)
|
||||
|
||||
m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
|
||||
|
||||
AC_OUTPUT([
|
||||
Makefile
|
||||
spice-server.pc
|
||||
server/Makefile
|
||||
server/spice-version.h
|
||||
server/tests/Makefile
|
||||
docs/Makefile
|
||||
docs/manual/Makefile
|
||||
tools/Makefile
|
||||
])
|
||||
|
||||
dnl ==========================================================================
|
||||
AC_MSG_NOTICE([
|
||||
|
||||
Spice $VERSION
|
||||
==============
|
||||
|
||||
prefix: ${prefix}
|
||||
C compiler: ${CC}
|
||||
|
||||
LZ4 support: ${have_lz4}
|
||||
Smartcard: ${have_smartcard}
|
||||
GStreamer: ${enable_gstreamer}
|
||||
SASL support: ${have_sasl}
|
||||
Manual: ${have_asciidoc}
|
||||
|
||||
Now type 'make' to build $PACKAGE
|
||||
])
|
||||
SPICE_PRINT_MESSAGES
|
791
spice/depcomp
791
spice/depcomp
@ -1,791 +0,0 @@
|
||||
#!/bin/sh
|
||||
# depcomp - compile a program generating dependencies as side-effects
|
||||
|
||||
scriptversion=2016-01-11.22; # UTC
|
||||
|
||||
# Copyright (C) 1999-2017 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
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
|
||||
|
||||
case $1 in
|
||||
'')
|
||||
echo "$0: No command. Try '$0 --help' for more information." 1>&2
|
||||
exit 1;
|
||||
;;
|
||||
-h | --h*)
|
||||
cat <<\EOF
|
||||
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
|
||||
|
||||
Run PROGRAMS ARGS to compile a file, generating dependencies
|
||||
as side-effects.
|
||||
|
||||
Environment variables:
|
||||
depmode Dependency tracking mode.
|
||||
source Source file read by 'PROGRAMS ARGS'.
|
||||
object Object file output by 'PROGRAMS ARGS'.
|
||||
DEPDIR directory where to store dependencies.
|
||||
depfile Dependency file to output.
|
||||
tmpdepfile Temporary file to use when outputting dependencies.
|
||||
libtool Whether libtool is used (yes/no).
|
||||
|
||||
Report bugs to <bug-automake@gnu.org>.
|
||||
EOF
|
||||
exit $?
|
||||
;;
|
||||
-v | --v*)
|
||||
echo "depcomp $scriptversion"
|
||||
exit $?
|
||||
;;
|
||||
esac
|
||||
|
||||
# Get the directory component of the given path, and save it in the
|
||||
# global variables '$dir'. Note that this directory component will
|
||||
# be either empty or ending with a '/' character. This is deliberate.
|
||||
set_dir_from ()
|
||||
{
|
||||
case $1 in
|
||||
*/*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
|
||||
*) dir=;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Get the suffix-stripped basename of the given path, and save it the
|
||||
# global variable '$base'.
|
||||
set_base_from ()
|
||||
{
|
||||
base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
|
||||
}
|
||||
|
||||
# If no dependency file was actually created by the compiler invocation,
|
||||
# we still have to create a dummy depfile, to avoid errors with the
|
||||
# Makefile "include basename.Plo" scheme.
|
||||
make_dummy_depfile ()
|
||||
{
|
||||
echo "#dummy" > "$depfile"
|
||||
}
|
||||
|
||||
# Factor out some common post-processing of the generated depfile.
|
||||
# Requires the auxiliary global variable '$tmpdepfile' to be set.
|
||||
aix_post_process_depfile ()
|
||||
{
|
||||
# If the compiler actually managed to produce a dependency file,
|
||||
# post-process it.
|
||||
if test -f "$tmpdepfile"; then
|
||||
# Each line is of the form 'foo.o: dependency.h'.
|
||||
# Do two passes, one to just change these to
|
||||
# $object: dependency.h
|
||||
# and one to simply output
|
||||
# dependency.h:
|
||||
# which is needed to avoid the deleted-header problem.
|
||||
{ sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
|
||||
sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
|
||||
} > "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
else
|
||||
make_dummy_depfile
|
||||
fi
|
||||
}
|
||||
|
||||
# A tabulation character.
|
||||
tab=' '
|
||||
# A newline character.
|
||||
nl='
|
||||
'
|
||||
# Character ranges might be problematic outside the C locale.
|
||||
# These definitions help.
|
||||
upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
|
||||
lower=abcdefghijklmnopqrstuvwxyz
|
||||
digits=0123456789
|
||||
alpha=${upper}${lower}
|
||||
|
||||
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
|
||||
echo "depcomp: Variables source, object and depmode must be set" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
|
||||
depfile=${depfile-`echo "$object" |
|
||||
sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
|
||||
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
|
||||
|
||||
rm -f "$tmpdepfile"
|
||||
|
||||
# Avoid interferences from the environment.
|
||||
gccflag= dashmflag=
|
||||
|
||||
# Some modes work just like other modes, but use different flags. We
|
||||
# parameterize here, but still list the modes in the big case below,
|
||||
# to make depend.m4 easier to write. Note that we *cannot* use a case
|
||||
# here, because this file can only contain one case statement.
|
||||
if test "$depmode" = hp; then
|
||||
# HP compiler uses -M and no extra arg.
|
||||
gccflag=-M
|
||||
depmode=gcc
|
||||
fi
|
||||
|
||||
if test "$depmode" = dashXmstdout; then
|
||||
# This is just like dashmstdout with a different argument.
|
||||
dashmflag=-xM
|
||||
depmode=dashmstdout
|
||||
fi
|
||||
|
||||
cygpath_u="cygpath -u -f -"
|
||||
if test "$depmode" = msvcmsys; then
|
||||
# This is just like msvisualcpp but w/o cygpath translation.
|
||||
# Just convert the backslash-escaped backslashes to single forward
|
||||
# slashes to satisfy depend.m4
|
||||
cygpath_u='sed s,\\\\,/,g'
|
||||
depmode=msvisualcpp
|
||||
fi
|
||||
|
||||
if test "$depmode" = msvc7msys; then
|
||||
# This is just like msvc7 but w/o cygpath translation.
|
||||
# Just convert the backslash-escaped backslashes to single forward
|
||||
# slashes to satisfy depend.m4
|
||||
cygpath_u='sed s,\\\\,/,g'
|
||||
depmode=msvc7
|
||||
fi
|
||||
|
||||
if test "$depmode" = xlc; then
|
||||
# IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
|
||||
gccflag=-qmakedep=gcc,-MF
|
||||
depmode=gcc
|
||||
fi
|
||||
|
||||
case "$depmode" in
|
||||
gcc3)
|
||||
## gcc 3 implements dependency tracking that does exactly what
|
||||
## we want. Yay! Note: for some reason libtool 1.4 doesn't like
|
||||
## it if -MD -MP comes after the -MF stuff. Hmm.
|
||||
## Unfortunately, FreeBSD c89 acceptance of flags depends upon
|
||||
## the command line argument order; so add the flags where they
|
||||
## appear in depend2.am. Note that the slowdown incurred here
|
||||
## affects only configure: in makefiles, %FASTDEP% shortcuts this.
|
||||
for arg
|
||||
do
|
||||
case $arg in
|
||||
-c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
|
||||
*) set fnord "$@" "$arg" ;;
|
||||
esac
|
||||
shift # fnord
|
||||
shift # $arg
|
||||
done
|
||||
"$@"
|
||||
stat=$?
|
||||
if test $stat -ne 0; then
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
mv "$tmpdepfile" "$depfile"
|
||||
;;
|
||||
|
||||
gcc)
|
||||
## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
|
||||
## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
|
||||
## (see the conditional assignment to $gccflag above).
|
||||
## There are various ways to get dependency output from gcc. Here's
|
||||
## why we pick this rather obscure method:
|
||||
## - Don't want to use -MD because we'd like the dependencies to end
|
||||
## up in a subdir. Having to rename by hand is ugly.
|
||||
## (We might end up doing this anyway to support other compilers.)
|
||||
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
|
||||
## -MM, not -M (despite what the docs say). Also, it might not be
|
||||
## supported by the other compilers which use the 'gcc' depmode.
|
||||
## - Using -M directly means running the compiler twice (even worse
|
||||
## than renaming).
|
||||
if test -z "$gccflag"; then
|
||||
gccflag=-MD,
|
||||
fi
|
||||
"$@" -Wp,"$gccflag$tmpdepfile"
|
||||
stat=$?
|
||||
if test $stat -ne 0; then
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
# The second -e expression handles DOS-style file names with drive
|
||||
# letters.
|
||||
sed -e 's/^[^:]*: / /' \
|
||||
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
|
||||
## This next piece of magic avoids the "deleted header file" problem.
|
||||
## The problem is that when a header file which appears in a .P file
|
||||
## is deleted, the dependency causes make to die (because there is
|
||||
## typically no way to rebuild the header). We avoid this by adding
|
||||
## dummy dependencies for each header file. Too bad gcc doesn't do
|
||||
## this for us directly.
|
||||
## Some versions of gcc put a space before the ':'. On the theory
|
||||
## that the space means something, we add a space to the output as
|
||||
## well. hp depmode also adds that space, but also prefixes the VPATH
|
||||
## to the object. Take care to not repeat it in the output.
|
||||
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||
## correctly. Breaking it into two sed invocations is a workaround.
|
||||
tr ' ' "$nl" < "$tmpdepfile" \
|
||||
| sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
|
||||
| sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
hp)
|
||||
# This case exists only to let depend.m4 do its work. It works by
|
||||
# looking at the text of this script. This case will never be run,
|
||||
# since it is checked for above.
|
||||
exit 1
|
||||
;;
|
||||
|
||||
sgi)
|
||||
if test "$libtool" = yes; then
|
||||
"$@" "-Wp,-MDupdate,$tmpdepfile"
|
||||
else
|
||||
"$@" -MDupdate "$tmpdepfile"
|
||||
fi
|
||||
stat=$?
|
||||
if test $stat -ne 0; then
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
|
||||
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
|
||||
echo "$object : \\" > "$depfile"
|
||||
# Clip off the initial element (the dependent). Don't try to be
|
||||
# clever and replace this with sed code, as IRIX sed won't handle
|
||||
# lines with more than a fixed number of characters (4096 in
|
||||
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
|
||||
# the IRIX cc adds comments like '#:fec' to the end of the
|
||||
# dependency line.
|
||||
tr ' ' "$nl" < "$tmpdepfile" \
|
||||
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
|
||||
| tr "$nl" ' ' >> "$depfile"
|
||||
echo >> "$depfile"
|
||||
# The second pass generates a dummy entry for each header file.
|
||||
tr ' ' "$nl" < "$tmpdepfile" \
|
||||
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
|
||||
>> "$depfile"
|
||||
else
|
||||
make_dummy_depfile
|
||||
fi
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
xlc)
|
||||
# This case exists only to let depend.m4 do its work. It works by
|
||||
# looking at the text of this script. This case will never be run,
|
||||
# since it is checked for above.
|
||||
exit 1
|
||||
;;
|
||||
|
||||
aix)
|
||||
# The C for AIX Compiler uses -M and outputs the dependencies
|
||||
# in a .u file. In older versions, this file always lives in the
|
||||
# current directory. Also, the AIX compiler puts '$object:' at the
|
||||
# start of each line; $object doesn't have directory information.
|
||||
# Version 6 uses the directory in both cases.
|
||||
set_dir_from "$object"
|
||||
set_base_from "$object"
|
||||
if test "$libtool" = yes; then
|
||||
tmpdepfile1=$dir$base.u
|
||||
tmpdepfile2=$base.u
|
||||
tmpdepfile3=$dir.libs/$base.u
|
||||
"$@" -Wc,-M
|
||||
else
|
||||
tmpdepfile1=$dir$base.u
|
||||
tmpdepfile2=$dir$base.u
|
||||
tmpdepfile3=$dir$base.u
|
||||
"$@" -M
|
||||
fi
|
||||
stat=$?
|
||||
if test $stat -ne 0; then
|
||||
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
|
||||
exit $stat
|
||||
fi
|
||||
|
||||
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
|
||||
do
|
||||
test -f "$tmpdepfile" && break
|
||||
done
|
||||
aix_post_process_depfile
|
||||
;;
|
||||
|
||||
tcc)
|
||||
# tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
|
||||
# FIXME: That version still under development at the moment of writing.
|
||||
# Make that this statement remains true also for stable, released
|
||||
# versions.
|
||||
# It will wrap lines (doesn't matter whether long or short) with a
|
||||
# trailing '\', as in:
|
||||
#
|
||||
# foo.o : \
|
||||
# foo.c \
|
||||
# foo.h \
|
||||
#
|
||||
# It will put a trailing '\' even on the last line, and will use leading
|
||||
# spaces rather than leading tabs (at least since its commit 0394caf7
|
||||
# "Emit spaces for -MD").
|
||||
"$@" -MD -MF "$tmpdepfile"
|
||||
stat=$?
|
||||
if test $stat -ne 0; then
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
# Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
|
||||
# We have to change lines of the first kind to '$object: \'.
|
||||
sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
|
||||
# And for each line of the second kind, we have to emit a 'dep.h:'
|
||||
# dummy dependency, to avoid the deleted-header problem.
|
||||
sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
## The order of this option in the case statement is important, since the
|
||||
## shell code in configure will try each of these formats in the order
|
||||
## listed in this file. A plain '-MD' option would be understood by many
|
||||
## compilers, so we must ensure this comes after the gcc and icc options.
|
||||
pgcc)
|
||||
# Portland's C compiler understands '-MD'.
|
||||
# Will always output deps to 'file.d' where file is the root name of the
|
||||
# source file under compilation, even if file resides in a subdirectory.
|
||||
# The object file name does not affect the name of the '.d' file.
|
||||
# pgcc 10.2 will output
|
||||
# foo.o: sub/foo.c sub/foo.h
|
||||
# and will wrap long lines using '\' :
|
||||
# foo.o: sub/foo.c ... \
|
||||
# sub/foo.h ... \
|
||||
# ...
|
||||
set_dir_from "$object"
|
||||
# Use the source, not the object, to determine the base name, since
|
||||
# that's sadly what pgcc will do too.
|
||||
set_base_from "$source"
|
||||
tmpdepfile=$base.d
|
||||
|
||||
# For projects that build the same source file twice into different object
|
||||
# files, the pgcc approach of using the *source* file root name can cause
|
||||
# problems in parallel builds. Use a locking strategy to avoid stomping on
|
||||
# the same $tmpdepfile.
|
||||
lockdir=$base.d-lock
|
||||
trap "
|
||||
echo '$0: caught signal, cleaning up...' >&2
|
||||
rmdir '$lockdir'
|
||||
exit 1
|
||||
" 1 2 13 15
|
||||
numtries=100
|
||||
i=$numtries
|
||||
while test $i -gt 0; do
|
||||
# mkdir is a portable test-and-set.
|
||||
if mkdir "$lockdir" 2>/dev/null; then
|
||||
# This process acquired the lock.
|
||||
"$@" -MD
|
||||
stat=$?
|
||||
# Release the lock.
|
||||
rmdir "$lockdir"
|
||||
break
|
||||
else
|
||||
# If the lock is being held by a different process, wait
|
||||
# until the winning process is done or we timeout.
|
||||
while test -d "$lockdir" && test $i -gt 0; do
|
||||
sleep 1
|
||||
i=`expr $i - 1`
|
||||
done
|
||||
fi
|
||||
i=`expr $i - 1`
|
||||
done
|
||||
trap - 1 2 13 15
|
||||
if test $i -le 0; then
|
||||
echo "$0: failed to acquire lock after $numtries attempts" >&2
|
||||
echo "$0: check lockdir '$lockdir'" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if test $stat -ne 0; then
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
# Each line is of the form `foo.o: dependent.h',
|
||||
# or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
|
||||
# Do two passes, one to just change these to
|
||||
# `$object: dependent.h' and one to simply `dependent.h:'.
|
||||
sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
|
||||
# Some versions of the HPUX 10.20 sed can't process this invocation
|
||||
# correctly. Breaking it into two sed invocations is a workaround.
|
||||
sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
|
||||
| sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
hp2)
|
||||
# The "hp" stanza above does not work with aCC (C++) and HP's ia64
|
||||
# compilers, which have integrated preprocessors. The correct option
|
||||
# to use with these is +Maked; it writes dependencies to a file named
|
||||
# 'foo.d', which lands next to the object file, wherever that
|
||||
# happens to be.
|
||||
# Much of this is similar to the tru64 case; see comments there.
|
||||
set_dir_from "$object"
|
||||
set_base_from "$object"
|
||||
if test "$libtool" = yes; then
|
||||
tmpdepfile1=$dir$base.d
|
||||
tmpdepfile2=$dir.libs/$base.d
|
||||
"$@" -Wc,+Maked
|
||||
else
|
||||
tmpdepfile1=$dir$base.d
|
||||
tmpdepfile2=$dir$base.d
|
||||
"$@" +Maked
|
||||
fi
|
||||
stat=$?
|
||||
if test $stat -ne 0; then
|
||||
rm -f "$tmpdepfile1" "$tmpdepfile2"
|
||||
exit $stat
|
||||
fi
|
||||
|
||||
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
|
||||
do
|
||||
test -f "$tmpdepfile" && break
|
||||
done
|
||||
if test -f "$tmpdepfile"; then
|
||||
sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
|
||||
# Add 'dependent.h:' lines.
|
||||
sed -ne '2,${
|
||||
s/^ *//
|
||||
s/ \\*$//
|
||||
s/$/:/
|
||||
p
|
||||
}' "$tmpdepfile" >> "$depfile"
|
||||
else
|
||||
make_dummy_depfile
|
||||
fi
|
||||
rm -f "$tmpdepfile" "$tmpdepfile2"
|
||||
;;
|
||||
|
||||
tru64)
|
||||
# The Tru64 compiler uses -MD to generate dependencies as a side
|
||||
# effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
|
||||
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
|
||||
# dependencies in 'foo.d' instead, so we check for that too.
|
||||
# Subdirectories are respected.
|
||||
set_dir_from "$object"
|
||||
set_base_from "$object"
|
||||
|
||||
if test "$libtool" = yes; then
|
||||
# Libtool generates 2 separate objects for the 2 libraries. These
|
||||
# two compilations output dependencies in $dir.libs/$base.o.d and
|
||||
# in $dir$base.o.d. We have to check for both files, because
|
||||
# one of the two compilations can be disabled. We should prefer
|
||||
# $dir$base.o.d over $dir.libs/$base.o.d because the latter is
|
||||
# automatically cleaned when .libs/ is deleted, while ignoring
|
||||
# the former would cause a distcleancheck panic.
|
||||
tmpdepfile1=$dir$base.o.d # libtool 1.5
|
||||
tmpdepfile2=$dir.libs/$base.o.d # Likewise.
|
||||
tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504
|
||||
"$@" -Wc,-MD
|
||||
else
|
||||
tmpdepfile1=$dir$base.d
|
||||
tmpdepfile2=$dir$base.d
|
||||
tmpdepfile3=$dir$base.d
|
||||
"$@" -MD
|
||||
fi
|
||||
|
||||
stat=$?
|
||||
if test $stat -ne 0; then
|
||||
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
|
||||
exit $stat
|
||||
fi
|
||||
|
||||
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
|
||||
do
|
||||
test -f "$tmpdepfile" && break
|
||||
done
|
||||
# Same post-processing that is required for AIX mode.
|
||||
aix_post_process_depfile
|
||||
;;
|
||||
|
||||
msvc7)
|
||||
if test "$libtool" = yes; then
|
||||
showIncludes=-Wc,-showIncludes
|
||||
else
|
||||
showIncludes=-showIncludes
|
||||
fi
|
||||
"$@" $showIncludes > "$tmpdepfile"
|
||||
stat=$?
|
||||
grep -v '^Note: including file: ' "$tmpdepfile"
|
||||
if test $stat -ne 0; then
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
# The first sed program below extracts the file names and escapes
|
||||
# backslashes for cygpath. The second sed program outputs the file
|
||||
# name when reading, but also accumulates all include files in the
|
||||
# hold buffer in order to output them again at the end. This only
|
||||
# works with sed implementations that can handle large buffers.
|
||||
sed < "$tmpdepfile" -n '
|
||||
/^Note: including file: *\(.*\)/ {
|
||||
s//\1/
|
||||
s/\\/\\\\/g
|
||||
p
|
||||
}' | $cygpath_u | sort -u | sed -n '
|
||||
s/ /\\ /g
|
||||
s/\(.*\)/'"$tab"'\1 \\/p
|
||||
s/.\(.*\) \\/\1:/
|
||||
H
|
||||
$ {
|
||||
s/.*/'"$tab"'/
|
||||
G
|
||||
p
|
||||
}' >> "$depfile"
|
||||
echo >> "$depfile" # make sure the fragment doesn't end with a backslash
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
msvc7msys)
|
||||
# This case exists only to let depend.m4 do its work. It works by
|
||||
# looking at the text of this script. This case will never be run,
|
||||
# since it is checked for above.
|
||||
exit 1
|
||||
;;
|
||||
|
||||
#nosideeffect)
|
||||
# This comment above is used by automake to tell side-effect
|
||||
# dependency tracking mechanisms from slower ones.
|
||||
|
||||
dashmstdout)
|
||||
# Important note: in order to support this mode, a compiler *must*
|
||||
# always write the preprocessed file to stdout, regardless of -o.
|
||||
"$@" || exit $?
|
||||
|
||||
# Remove the call to Libtool.
|
||||
if test "$libtool" = yes; then
|
||||
while test "X$1" != 'X--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
|
||||
# Remove '-o $object'.
|
||||
IFS=" "
|
||||
for arg
|
||||
do
|
||||
case $arg in
|
||||
-o)
|
||||
shift
|
||||
;;
|
||||
$object)
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"
|
||||
shift # fnord
|
||||
shift # $arg
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
test -z "$dashmflag" && dashmflag=-M
|
||||
# Require at least two characters before searching for ':'
|
||||
# in the target name. This is to cope with DOS-style filenames:
|
||||
# a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
|
||||
"$@" $dashmflag |
|
||||
sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
|
||||
rm -f "$depfile"
|
||||
cat < "$tmpdepfile" > "$depfile"
|
||||
# Some versions of the HPUX 10.20 sed can't process this sed invocation
|
||||
# correctly. Breaking it into two sed invocations is a workaround.
|
||||
tr ' ' "$nl" < "$tmpdepfile" \
|
||||
| sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
|
||||
| sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
dashXmstdout)
|
||||
# This case only exists to satisfy depend.m4. It is never actually
|
||||
# run, as this mode is specially recognized in the preamble.
|
||||
exit 1
|
||||
;;
|
||||
|
||||
makedepend)
|
||||
"$@" || exit $?
|
||||
# Remove any Libtool call
|
||||
if test "$libtool" = yes; then
|
||||
while test "X$1" != 'X--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
# X makedepend
|
||||
shift
|
||||
cleared=no eat=no
|
||||
for arg
|
||||
do
|
||||
case $cleared in
|
||||
no)
|
||||
set ""; shift
|
||||
cleared=yes ;;
|
||||
esac
|
||||
if test $eat = yes; then
|
||||
eat=no
|
||||
continue
|
||||
fi
|
||||
case "$arg" in
|
||||
-D*|-I*)
|
||||
set fnord "$@" "$arg"; shift ;;
|
||||
# Strip any option that makedepend may not understand. Remove
|
||||
# the object too, otherwise makedepend will parse it as a source file.
|
||||
-arch)
|
||||
eat=yes ;;
|
||||
-*|$object)
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"; shift ;;
|
||||
esac
|
||||
done
|
||||
obj_suffix=`echo "$object" | sed 's/^.*\././'`
|
||||
touch "$tmpdepfile"
|
||||
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
|
||||
rm -f "$depfile"
|
||||
# makedepend may prepend the VPATH from the source file name to the object.
|
||||
# No need to regex-escape $object, excess matching of '.' is harmless.
|
||||
sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
|
||||
# Some versions of the HPUX 10.20 sed can't process the last invocation
|
||||
# correctly. Breaking it into two sed invocations is a workaround.
|
||||
sed '1,2d' "$tmpdepfile" \
|
||||
| tr ' ' "$nl" \
|
||||
| sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
|
||||
| sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile" "$tmpdepfile".bak
|
||||
;;
|
||||
|
||||
cpp)
|
||||
# Important note: in order to support this mode, a compiler *must*
|
||||
# always write the preprocessed file to stdout.
|
||||
"$@" || exit $?
|
||||
|
||||
# Remove the call to Libtool.
|
||||
if test "$libtool" = yes; then
|
||||
while test "X$1" != 'X--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
|
||||
# Remove '-o $object'.
|
||||
IFS=" "
|
||||
for arg
|
||||
do
|
||||
case $arg in
|
||||
-o)
|
||||
shift
|
||||
;;
|
||||
$object)
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"
|
||||
shift # fnord
|
||||
shift # $arg
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
"$@" -E \
|
||||
| sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
|
||||
-e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
|
||||
| sed '$ s: \\$::' > "$tmpdepfile"
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
cat < "$tmpdepfile" >> "$depfile"
|
||||
sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
msvisualcpp)
|
||||
# Important note: in order to support this mode, a compiler *must*
|
||||
# always write the preprocessed file to stdout.
|
||||
"$@" || exit $?
|
||||
|
||||
# Remove the call to Libtool.
|
||||
if test "$libtool" = yes; then
|
||||
while test "X$1" != 'X--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
|
||||
IFS=" "
|
||||
for arg
|
||||
do
|
||||
case "$arg" in
|
||||
-o)
|
||||
shift
|
||||
;;
|
||||
$object)
|
||||
shift
|
||||
;;
|
||||
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
|
||||
set fnord "$@"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
done
|
||||
"$@" -E 2>/dev/null |
|
||||
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
|
||||
echo "$tab" >> "$depfile"
|
||||
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
msvcmsys)
|
||||
# This case exists only to let depend.m4 do its work. It works by
|
||||
# looking at the text of this script. This case will never be run,
|
||||
# since it is checked for above.
|
||||
exit 1
|
||||
;;
|
||||
|
||||
none)
|
||||
exec "$@"
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "Unknown depmode $depmode" 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
|
||||
# Local Variables:
|
||||
# mode: shell-script
|
||||
# sh-indentation: 2
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-time-zone: "UTC0"
|
||||
# time-stamp-end: "; # UTC"
|
||||
# End:
|
@ -1,21 +0,0 @@
|
||||
NULL =
|
||||
ASCIIDOC_FLAGS = -a icons -a toc
|
||||
|
||||
EXTRA_DIST = \
|
||||
spice_style.html \
|
||||
spice_style.txt \
|
||||
spice_threading_model.html \
|
||||
spice_threading_model.txt \
|
||||
$(NULL)
|
||||
|
||||
if BUILD_MANUAL
|
||||
SUBDIRS = manual
|
||||
|
||||
all-local: spice_style.html spice_threading_model.html
|
||||
|
||||
%.html: %.txt
|
||||
$(AM_V_GEN) $(ASCIIDOC) -n $(ASCIIDOC_FLAGS) -o $@ $<
|
||||
endif
|
||||
|
||||
clean-local:
|
||||
rm -f spice_style.html
|
@ -1,703 +0,0 @@
|
||||
# Makefile.in generated by automake 1.15.1 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2017 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = docs
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_valgrind_check.m4 \
|
||||
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
|
||||
$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
|
||||
$(top_srcdir)/m4/lt~obsolete.m4 \
|
||||
$(top_srcdir)/m4/manywarnings.m4 \
|
||||
$(top_srcdir)/m4/spice-compile-warnings.m4 \
|
||||
$(top_srcdir)/m4/virt-linker-no-indirect.m4 \
|
||||
$(top_srcdir)/m4/virt-linker-relro.m4 \
|
||||
$(top_srcdir)/m4/warnings.m4 \
|
||||
$(top_srcdir)/subprojects/spice-common/m4/spice-deps.m4 \
|
||||
$(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
AM_V_P = $(am__v_P_@AM_V@)
|
||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||
am__v_P_0 = false
|
||||
am__v_P_1 = :
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
|
||||
ctags-recursive dvi-recursive html-recursive info-recursive \
|
||||
install-data-recursive install-dvi-recursive \
|
||||
install-exec-recursive install-html-recursive \
|
||||
install-info-recursive install-pdf-recursive \
|
||||
install-ps-recursive install-recursive installcheck-recursive \
|
||||
installdirs-recursive pdf-recursive ps-recursive \
|
||||
tags-recursive uninstall-recursive
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
|
||||
distclean-recursive maintainer-clean-recursive
|
||||
am__recursive_targets = \
|
||||
$(RECURSIVE_TARGETS) \
|
||||
$(RECURSIVE_CLEAN_TARGETS) \
|
||||
$(am__extra_recursive_targets)
|
||||
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
|
||||
distdir
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
# Read a list of newline-separated strings from the standard input,
|
||||
# and print each of them once, without duplicates. Input order is
|
||||
# *not* preserved.
|
||||
am__uniquify_input = $(AWK) '\
|
||||
BEGIN { nonempty = 0; } \
|
||||
{ items[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in items) print i; }; } \
|
||||
'
|
||||
# Make sure the list of sources is unique. This is necessary because,
|
||||
# e.g., the same source file might be shared among _SOURCES variables
|
||||
# for different programs/libraries.
|
||||
am__define_uniq_tagged_files = \
|
||||
list='$(am__tagged_files)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | $(am__uniquify_input)`
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DIST_SUBDIRS = manual
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
am__relativize = \
|
||||
dir0=`pwd`; \
|
||||
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
|
||||
sed_rest='s,^[^/]*/*,,'; \
|
||||
sed_last='s,^.*/\([^/]*\)$$,\1,'; \
|
||||
sed_butlast='s,/*[^/]*$$,,'; \
|
||||
while test -n "$$dir1"; do \
|
||||
first=`echo "$$dir1" | sed -e "$$sed_first"`; \
|
||||
if test "$$first" != "."; then \
|
||||
if test "$$first" = ".."; then \
|
||||
dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
|
||||
dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
|
||||
else \
|
||||
first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
|
||||
if test "$$first2" = "$$first"; then \
|
||||
dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
|
||||
else \
|
||||
dir2="../$$dir2"; \
|
||||
fi; \
|
||||
dir0="$$dir0"/"$$first"; \
|
||||
fi; \
|
||||
fi; \
|
||||
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
|
||||
done; \
|
||||
reldir="$$dir2"
|
||||
A2X = @A2X@
|
||||
ACLOCAL = @ACLOCAL@
|
||||
ALLOCA = @ALLOCA@
|
||||
AMTAR = @AMTAR@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
ASCIIDOC = @ASCIIDOC@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CELT051_CFLAGS = @CELT051_CFLAGS@
|
||||
CELT051_LIBS = @CELT051_LIBS@
|
||||
CFLAGS = @CFLAGS@
|
||||
COMMON_CFLAGS = @COMMON_CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
DUMPBIN = @DUMPBIN@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
ENABLE_VALGRIND_drd = @ENABLE_VALGRIND_drd@
|
||||
ENABLE_VALGRIND_helgrind = @ENABLE_VALGRIND_helgrind@
|
||||
ENABLE_VALGRIND_memcheck = @ENABLE_VALGRIND_memcheck@
|
||||
ENABLE_VALGRIND_sgcheck = @ENABLE_VALGRIND_sgcheck@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
GIO_UNIX_CFLAGS = @GIO_UNIX_CFLAGS@
|
||||
GIO_UNIX_LIBS = @GIO_UNIX_LIBS@
|
||||
GLIB2_CFLAGS = @GLIB2_CFLAGS@
|
||||
GLIB2_LIBS = @GLIB2_LIBS@
|
||||
GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@
|
||||
GOBJECT2_LIBS = @GOBJECT2_LIBS@
|
||||
GREP = @GREP@
|
||||
GSTREAMER_0_10_CFLAGS = @GSTREAMER_0_10_CFLAGS@
|
||||
GSTREAMER_0_10_LIBS = @GSTREAMER_0_10_LIBS@
|
||||
GSTREAMER_1_0_CFLAGS = @GSTREAMER_1_0_CFLAGS@
|
||||
GSTREAMER_1_0_LIBS = @GSTREAMER_1_0_LIBS@
|
||||
GST_INSPECT_0_10 = @GST_INSPECT_0_10@
|
||||
GST_INSPECT_1_0 = @GST_INSPECT_1_0@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
JPEG_LIBS = @JPEG_LIBS@
|
||||
LD = @LD@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBM = @LIBM@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBRT = @LIBRT@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LIPO = @LIPO@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
|
||||
LZ4_CFLAGS = @LZ4_CFLAGS@
|
||||
LZ4_LIBS = @LZ4_LIBS@
|
||||
MAINT = @MAINT@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
NM = @NM@
|
||||
NMEDIT = @NMEDIT@
|
||||
NO_INDIRECT_LDFLAGS = @NO_INDIRECT_LDFLAGS@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
ORC_CFLAGS = @ORC_CFLAGS@
|
||||
ORC_LIBS = @ORC_LIBS@
|
||||
OTOOL = @OTOOL@
|
||||
OTOOL64 = @OTOOL64@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PIXMAN_CFLAGS = @PIXMAN_CFLAGS@
|
||||
PIXMAN_LIBS = @PIXMAN_LIBS@
|
||||
PKG_CONFIG = @PKG_CONFIG@
|
||||
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
|
||||
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
|
||||
RANLIB = @RANLIB@
|
||||
RELRO_LDFLAGS = @RELRO_LDFLAGS@
|
||||
SASL_CFLAGS = @SASL_CFLAGS@
|
||||
SASL_LIBS = @SASL_LIBS@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
SMARTCARD_CFLAGS = @SMARTCARD_CFLAGS@
|
||||
SMARTCARD_LIBS = @SMARTCARD_LIBS@
|
||||
SPICE_COMMON_DIR = @SPICE_COMMON_DIR@
|
||||
SPICE_LT_VERSION = @SPICE_LT_VERSION@
|
||||
SPICE_NONPKGCONFIG_CFLAGS = @SPICE_NONPKGCONFIG_CFLAGS@
|
||||
SPICE_NONPKGCONFIG_LIBS = @SPICE_NONPKGCONFIG_LIBS@
|
||||
SPICE_PROTOCOL_CFLAGS = @SPICE_PROTOCOL_CFLAGS@
|
||||
SPICE_PROTOCOL_LIBS = @SPICE_PROTOCOL_LIBS@
|
||||
SPICE_PROTOCOL_MIN_VER = @SPICE_PROTOCOL_MIN_VER@
|
||||
SPICE_REQUIRES = @SPICE_REQUIRES@
|
||||
SPICE_SERVER_VERSION = @SPICE_SERVER_VERSION@
|
||||
SSL_CFLAGS = @SSL_CFLAGS@
|
||||
SSL_LIBS = @SSL_LIBS@
|
||||
STRIP = @STRIP@
|
||||
VALGRIND = @VALGRIND@
|
||||
VALGRIND_ENABLED = @VALGRIND_ENABLED@
|
||||
VERSION = @VERSION@
|
||||
VISIBILITY_HIDDEN_CFLAGS = @VISIBILITY_HIDDEN_CFLAGS@
|
||||
WARN_CFLAGS = @WARN_CFLAGS@
|
||||
WARN_CXXFLAGS = @WARN_CXXFLAGS@
|
||||
WARN_LDFLAGS = @WARN_LDFLAGS@
|
||||
Z_LIBS = @Z_LIBS@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
subdirs = @subdirs@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
valgrind_enabled_tools = @valgrind_enabled_tools@
|
||||
valgrind_tools = @valgrind_tools@
|
||||
NULL =
|
||||
ASCIIDOC_FLAGS = -a icons -a toc
|
||||
EXTRA_DIST = \
|
||||
spice_style.html \
|
||||
spice_style.txt \
|
||||
spice_threading_model.html \
|
||||
spice_threading_model.txt \
|
||||
$(NULL)
|
||||
|
||||
@BUILD_MANUAL_TRUE@SUBDIRS = manual
|
||||
all: all-recursive
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu docs/Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
# This directory's subdirectories are mostly independent; you can cd
|
||||
# into them and run 'make' without going through this Makefile.
|
||||
# To change the values of 'make' variables: instead of editing Makefiles,
|
||||
# (1) if the variable is set in 'config.status', edit 'config.status'
|
||||
# (which will cause the Makefiles to be regenerated when you run 'make');
|
||||
# (2) otherwise, pass the desired values on the 'make' command line.
|
||||
$(am__recursive_targets):
|
||||
@fail=; \
|
||||
if $(am__make_keepgoing); then \
|
||||
failcom='fail=yes'; \
|
||||
else \
|
||||
failcom='exit 1'; \
|
||||
fi; \
|
||||
dot_seen=no; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
case "$@" in \
|
||||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||
*) list='$(SUBDIRS)' ;; \
|
||||
esac; \
|
||||
for subdir in $$list; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
dot_seen=yes; \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done; \
|
||||
if test "$$dot_seen" = "no"; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||
fi; test -z "$$fail"
|
||||
|
||||
ID: $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); mkid -fID $$unique
|
||||
tags: tags-recursive
|
||||
TAGS: tags
|
||||
|
||||
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
set x; \
|
||||
here=`pwd`; \
|
||||
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
||||
include_option=--etags-include; \
|
||||
empty_fix=.; \
|
||||
else \
|
||||
include_option=--include; \
|
||||
empty_fix=; \
|
||||
fi; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test ! -f $$subdir/TAGS || \
|
||||
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
|
||||
fi; \
|
||||
done; \
|
||||
$(am__define_uniq_tagged_files); \
|
||||
shift; \
|
||||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
if test $$# -gt 0; then \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
"$$@" $$unique; \
|
||||
else \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$unique; \
|
||||
fi; \
|
||||
fi
|
||||
ctags: ctags-recursive
|
||||
|
||||
CTAGS: ctags
|
||||
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); \
|
||||
test -z "$(CTAGS_ARGS)$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& $(am__cd) $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||
cscopelist: cscopelist-recursive
|
||||
|
||||
cscopelist-am: $(am__tagged_files)
|
||||
list='$(am__tagged_files)'; \
|
||||
case "$(srcdir)" in \
|
||||
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
||||
*) sdir=$(subdir)/$(srcdir) ;; \
|
||||
esac; \
|
||||
for i in $$list; do \
|
||||
if test -f "$$i"; then \
|
||||
echo "$(subdir)/$$i"; \
|
||||
else \
|
||||
echo "$$sdir/$$i"; \
|
||||
fi; \
|
||||
done >> $(top_builddir)/cscope.files
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
$(am__make_dryrun) \
|
||||
|| test -d "$(distdir)/$$subdir" \
|
||||
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|
||||
|| exit 1; \
|
||||
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
|
||||
$(am__relativize); \
|
||||
new_distdir=$$reldir; \
|
||||
dir1=$$subdir; dir2="$(top_distdir)"; \
|
||||
$(am__relativize); \
|
||||
new_top_distdir=$$reldir; \
|
||||
echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
|
||||
echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
|
||||
($(am__cd) $$subdir && \
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="$$new_top_distdir" \
|
||||
distdir="$$new_distdir" \
|
||||
am__remove_distdir=: \
|
||||
am__skip_length_check=: \
|
||||
am__skip_mode_fix=: \
|
||||
distdir) \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-recursive
|
||||
@BUILD_MANUAL_FALSE@all-local:
|
||||
all-am: Makefile all-local
|
||||
installdirs: installdirs-recursive
|
||||
installdirs-am:
|
||||
install: install-recursive
|
||||
install-exec: install-exec-recursive
|
||||
install-data: install-data-recursive
|
||||
uninstall: uninstall-recursive
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-recursive
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-recursive
|
||||
|
||||
clean-am: clean-generic clean-libtool clean-local mostlyclean-am
|
||||
|
||||
distclean: distclean-recursive
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic distclean-tags
|
||||
|
||||
dvi: dvi-recursive
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-recursive
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-recursive
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-recursive
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-recursive
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-recursive
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-recursive
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-recursive
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-recursive
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-recursive
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf: pdf-recursive
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-recursive
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am:
|
||||
|
||||
.MAKE: $(am__recursive_targets) install-am install-strip
|
||||
|
||||
.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am all-local \
|
||||
check check-am clean clean-generic clean-libtool clean-local \
|
||||
cscopelist-am ctags ctags-am distclean distclean-generic \
|
||||
distclean-libtool distclean-tags distdir dvi dvi-am html \
|
||||
html-am info info-am install install-am install-data \
|
||||
install-data-am install-dvi install-dvi-am install-exec \
|
||||
install-exec-am install-html install-html-am install-info \
|
||||
install-info-am install-man install-pdf install-pdf-am \
|
||||
install-ps install-ps-am install-strip installcheck \
|
||||
installcheck-am installdirs installdirs-am maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-generic \
|
||||
mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
|
||||
uninstall-am
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
@BUILD_MANUAL_TRUE@all-local: spice_style.html spice_threading_model.html
|
||||
|
||||
@BUILD_MANUAL_TRUE@%.html: %.txt
|
||||
@BUILD_MANUAL_TRUE@ $(AM_V_GEN) $(ASCIIDOC) -n $(ASCIIDOC_FLAGS) -o $@ $<
|
||||
|
||||
clean-local:
|
||||
rm -f spice_style.html
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
@ -1,31 +0,0 @@
|
||||
NULL =
|
||||
SUFFIXES = .html
|
||||
ASCIIDOC_FLAGS = -a icons -a toc
|
||||
|
||||
EXTRA_DIST = \
|
||||
images/icons/important.png \
|
||||
images/icons/note.png \
|
||||
manual.html \
|
||||
manual.chunked \
|
||||
manual.txt \
|
||||
$(NULL)
|
||||
|
||||
.txt.html:
|
||||
$(AM_V_GEN) $(ASCIIDOC) $(ASCIIDOC_FLAGS) -o $@ $<
|
||||
|
||||
manual.chunked: manual.txt
|
||||
$(AM_V_GEN) $(A2X) -f chunked -D $(builddir) $(ASCIIDOC_FLAGS) $<
|
||||
|
||||
docfiles =
|
||||
if BUILD_HTML_MANUAL
|
||||
docfiles += manual.html
|
||||
endif
|
||||
if BUILD_CHUNKED_MANUAL
|
||||
docfiles += manual.chunked
|
||||
endif
|
||||
|
||||
all-local: $(docfiles)
|
||||
|
||||
clean-local:
|
||||
rm -f manual.html
|
||||
rm -rf manual.chunked
|
@ -1,531 +0,0 @@
|
||||
# Makefile.in generated by automake 1.15.1 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2017 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
@BUILD_HTML_MANUAL_TRUE@am__append_1 = manual.html
|
||||
@BUILD_CHUNKED_MANUAL_TRUE@am__append_2 = manual.chunked
|
||||
subdir = docs/manual
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_valgrind_check.m4 \
|
||||
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
|
||||
$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
|
||||
$(top_srcdir)/m4/lt~obsolete.m4 \
|
||||
$(top_srcdir)/m4/manywarnings.m4 \
|
||||
$(top_srcdir)/m4/spice-compile-warnings.m4 \
|
||||
$(top_srcdir)/m4/virt-linker-no-indirect.m4 \
|
||||
$(top_srcdir)/m4/virt-linker-relro.m4 \
|
||||
$(top_srcdir)/m4/warnings.m4 \
|
||||
$(top_srcdir)/subprojects/spice-common/m4/spice-deps.m4 \
|
||||
$(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
AM_V_P = $(am__v_P_@AM_V@)
|
||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||
am__v_P_0 = false
|
||||
am__v_P_1 = :
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
A2X = @A2X@
|
||||
ACLOCAL = @ACLOCAL@
|
||||
ALLOCA = @ALLOCA@
|
||||
AMTAR = @AMTAR@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
ASCIIDOC = @ASCIIDOC@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CELT051_CFLAGS = @CELT051_CFLAGS@
|
||||
CELT051_LIBS = @CELT051_LIBS@
|
||||
CFLAGS = @CFLAGS@
|
||||
COMMON_CFLAGS = @COMMON_CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
DUMPBIN = @DUMPBIN@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
ENABLE_VALGRIND_drd = @ENABLE_VALGRIND_drd@
|
||||
ENABLE_VALGRIND_helgrind = @ENABLE_VALGRIND_helgrind@
|
||||
ENABLE_VALGRIND_memcheck = @ENABLE_VALGRIND_memcheck@
|
||||
ENABLE_VALGRIND_sgcheck = @ENABLE_VALGRIND_sgcheck@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
GIO_UNIX_CFLAGS = @GIO_UNIX_CFLAGS@
|
||||
GIO_UNIX_LIBS = @GIO_UNIX_LIBS@
|
||||
GLIB2_CFLAGS = @GLIB2_CFLAGS@
|
||||
GLIB2_LIBS = @GLIB2_LIBS@
|
||||
GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@
|
||||
GOBJECT2_LIBS = @GOBJECT2_LIBS@
|
||||
GREP = @GREP@
|
||||
GSTREAMER_0_10_CFLAGS = @GSTREAMER_0_10_CFLAGS@
|
||||
GSTREAMER_0_10_LIBS = @GSTREAMER_0_10_LIBS@
|
||||
GSTREAMER_1_0_CFLAGS = @GSTREAMER_1_0_CFLAGS@
|
||||
GSTREAMER_1_0_LIBS = @GSTREAMER_1_0_LIBS@
|
||||
GST_INSPECT_0_10 = @GST_INSPECT_0_10@
|
||||
GST_INSPECT_1_0 = @GST_INSPECT_1_0@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
JPEG_LIBS = @JPEG_LIBS@
|
||||
LD = @LD@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBM = @LIBM@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBRT = @LIBRT@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LIPO = @LIPO@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
|
||||
LZ4_CFLAGS = @LZ4_CFLAGS@
|
||||
LZ4_LIBS = @LZ4_LIBS@
|
||||
MAINT = @MAINT@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
NM = @NM@
|
||||
NMEDIT = @NMEDIT@
|
||||
NO_INDIRECT_LDFLAGS = @NO_INDIRECT_LDFLAGS@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
ORC_CFLAGS = @ORC_CFLAGS@
|
||||
ORC_LIBS = @ORC_LIBS@
|
||||
OTOOL = @OTOOL@
|
||||
OTOOL64 = @OTOOL64@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PIXMAN_CFLAGS = @PIXMAN_CFLAGS@
|
||||
PIXMAN_LIBS = @PIXMAN_LIBS@
|
||||
PKG_CONFIG = @PKG_CONFIG@
|
||||
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
|
||||
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
|
||||
RANLIB = @RANLIB@
|
||||
RELRO_LDFLAGS = @RELRO_LDFLAGS@
|
||||
SASL_CFLAGS = @SASL_CFLAGS@
|
||||
SASL_LIBS = @SASL_LIBS@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
SMARTCARD_CFLAGS = @SMARTCARD_CFLAGS@
|
||||
SMARTCARD_LIBS = @SMARTCARD_LIBS@
|
||||
SPICE_COMMON_DIR = @SPICE_COMMON_DIR@
|
||||
SPICE_LT_VERSION = @SPICE_LT_VERSION@
|
||||
SPICE_NONPKGCONFIG_CFLAGS = @SPICE_NONPKGCONFIG_CFLAGS@
|
||||
SPICE_NONPKGCONFIG_LIBS = @SPICE_NONPKGCONFIG_LIBS@
|
||||
SPICE_PROTOCOL_CFLAGS = @SPICE_PROTOCOL_CFLAGS@
|
||||
SPICE_PROTOCOL_LIBS = @SPICE_PROTOCOL_LIBS@
|
||||
SPICE_PROTOCOL_MIN_VER = @SPICE_PROTOCOL_MIN_VER@
|
||||
SPICE_REQUIRES = @SPICE_REQUIRES@
|
||||
SPICE_SERVER_VERSION = @SPICE_SERVER_VERSION@
|
||||
SSL_CFLAGS = @SSL_CFLAGS@
|
||||
SSL_LIBS = @SSL_LIBS@
|
||||
STRIP = @STRIP@
|
||||
VALGRIND = @VALGRIND@
|
||||
VALGRIND_ENABLED = @VALGRIND_ENABLED@
|
||||
VERSION = @VERSION@
|
||||
VISIBILITY_HIDDEN_CFLAGS = @VISIBILITY_HIDDEN_CFLAGS@
|
||||
WARN_CFLAGS = @WARN_CFLAGS@
|
||||
WARN_CXXFLAGS = @WARN_CXXFLAGS@
|
||||
WARN_LDFLAGS = @WARN_LDFLAGS@
|
||||
Z_LIBS = @Z_LIBS@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
subdirs = @subdirs@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
valgrind_enabled_tools = @valgrind_enabled_tools@
|
||||
valgrind_tools = @valgrind_tools@
|
||||
NULL =
|
||||
SUFFIXES = .html
|
||||
ASCIIDOC_FLAGS = -a icons -a toc
|
||||
EXTRA_DIST = \
|
||||
images/icons/important.png \
|
||||
images/icons/note.png \
|
||||
manual.html \
|
||||
manual.chunked \
|
||||
manual.txt \
|
||||
$(NULL)
|
||||
|
||||
docfiles = $(am__append_1) $(am__append_2)
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .html .txt
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/manual/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu docs/manual/Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
tags TAGS:
|
||||
|
||||
ctags CTAGS:
|
||||
|
||||
cscope cscopelist:
|
||||
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile all-local
|
||||
installdirs:
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic clean-libtool clean-local mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-am
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-am
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-am
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-am
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am:
|
||||
|
||||
.MAKE: install-am install-strip
|
||||
|
||||
.PHONY: all all-am all-local check check-am clean clean-generic \
|
||||
clean-libtool clean-local cscopelist-am ctags-am distclean \
|
||||
distclean-generic distclean-libtool distdir dvi dvi-am html \
|
||||
html-am info info-am install install-am install-data \
|
||||
install-data-am install-dvi install-dvi-am install-exec \
|
||||
install-exec-am install-html install-html-am install-info \
|
||||
install-info-am install-man install-pdf install-pdf-am \
|
||||
install-ps install-ps-am install-strip installcheck \
|
||||
installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-generic \
|
||||
mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \
|
||||
uninstall-am
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
.txt.html:
|
||||
$(AM_V_GEN) $(ASCIIDOC) $(ASCIIDOC_FLAGS) -o $@ $<
|
||||
|
||||
manual.chunked: manual.txt
|
||||
$(AM_V_GEN) $(A2X) -f chunked -D $(builddir) $(ASCIIDOC_FLAGS) $<
|
||||
|
||||
all-local: $(docfiles)
|
||||
|
||||
clean-local:
|
||||
rm -f manual.html
|
||||
rm -rf manual.chunked
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
Binary file not shown.
Before Width: | Height: | Size: 2.9 KiB |
Binary file not shown.
Before Width: | Height: | Size: 2.4 KiB |
@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>A. Manual authors</title><link rel="stylesheet" type="text/css" href="docbook-xsl.css" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="home" href="index.html" title="Spice User Manual" /><link rel="up" href="index.html" title="Spice User Manual" /><link rel="prev" href="ar01s16.html" title="16. Debugging" /><link rel="next" href="go01.html" title="Glossary" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><td width="20%" align="left"><a accesskey="p" href="ar01s16.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="go01.html">Next</a></td></tr></table><hr /></div><div class="appendix"><div class="titlepage"><div><div><h2 class="title"><a id="_manual_authors"></a>A. Manual authors</h2></div></div></div><p>The following people have contributed to this manual:</p><p>Arnon Gilboa
|
||||
Christophe Fergeau
|
||||
Lubos Kocman
|
||||
Marc-André Lureau
|
||||
Yaniv Kamay</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ar01s16.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="go01.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html>
|
@ -1,154 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>1. Introduction</title><link rel="stylesheet" type="text/css" href="docbook-xsl.css" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="home" href="index.html" title="Spice User Manual" /><link rel="up" href="index.html" title="Spice User Manual" /><link rel="prev" href="index.html" title="Spice User Manual" /><link rel="next" href="ar01s02.html" title="2. Using Spice" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ar01s02.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_introduction"></a>1. Introduction</h2></div></div></div><p>Spice is an open remote computing solution, providing client access to
|
||||
remote displays and devices (e.g. keyboard, mouse, audio). The main
|
||||
use case is to get remote access to virtual machines, although other
|
||||
use cases are possible and in various development stage.</p><p>Spice provides a desktop-like user experience, while trying to offload
|
||||
most of the intensive CPU and GPU tasks to the client. The basic
|
||||
building blocks of Spice are:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
|
||||
<a class="link" href="ar01s01.html#spice-server" title="Spice Server">Spice Server</a>
|
||||
</li><li class="listitem">
|
||||
<a class="link" href="ar01s01.html#spice-client" title="Spice Client">Spice Client</a>
|
||||
</li><li class="listitem">
|
||||
<a class="link" href="ar01s01.html#spice-protocol" title="Spice Protocol">Spice Protocol</a>
|
||||
</li></ul></div><p>The following sections provide basic information on Spice components
|
||||
and features, obtaining, building installing and using Spice.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_spice_and_spice_related_components"></a>1.1. Spice and Spice-related components</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="spice-server"></a>Spice Server</h4></div></div></div><p>Spice server is implemented in libspice, a VDI pluggable
|
||||
library. Currently, the main user of this library is QEMU. QEMU uses
|
||||
spice-server to provide remote access to virtual machines through the
|
||||
Spice protocol. Virtual Device Interface (VDI) defines a set of
|
||||
interfaces that provide a standard way to publish virtual devices
|
||||
(e.g. display device, keyboard, mouse) and enables different Spice
|
||||
components to interact with those devices. On one side, the server
|
||||
communicates with the remote client using the Spice protocol and on
|
||||
the other side, it interacts with the VDI host application (e.g QEMU).</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="spice-client"></a>Spice Client</h4></div></div></div><p>The Spice client is a program which is used by the end user to access
|
||||
remote systems through Spice. The recommended client is remote-viewer
|
||||
(which is shipped with virt-viewer). GNOME Boxes can also be used as a
|
||||
Spice client. spicec is an obsolete legacy client, and spicy is only a
|
||||
test application.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_qxl_device_and_drivers"></a>QXL Device and Drivers</h4></div></div></div><p>Spice server supports the QXL VDI interface. When libspice is used
|
||||
with QEMU, a specific video PCI device can be used for improving
|
||||
remote display performance and enhancing the graphic capabilities of
|
||||
the guest graphic system. This video device is called a QXL device and
|
||||
requires guest QXL drivers for full functionality. However, standard
|
||||
VGA is supported when no driver exists.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_spice_agent"></a>Spice Agent</h4></div></div></div><p>The Spice agent is an optional component for enhancing user experience
|
||||
and performing guest-oriented management tasks. For example, the agent
|
||||
injects mouse position and state to the guest when using client mouse
|
||||
mode. It also enables you to move cursor freely between guest and
|
||||
client. Other features of agent are shared clipboard (copy and paste
|
||||
between guest and host) and aligning guest resolution with client when
|
||||
entering fullscreen mode.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_vdi_port_device"></a>VDI Port Device</h4></div></div></div><p>The Spice protocol supports a communication channel between the client
|
||||
and the agent on the server side. When using QEMU, Spice agent resides
|
||||
on the guest. VDI port is a QEMU PCI device used for communication
|
||||
with the agent.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="spice-protocol"></a>Spice Protocol</h4></div></div></div><p>The Spice protocol defines the messages and rules for the
|
||||
communication between the various Spice components.</p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_features"></a>1.2. Features</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_multiple_channels"></a>Multiple Channels</h4></div></div></div><p>The server and client communicate via channels. Each channel is
|
||||
dedicated to a specific type of data. The available channels are the
|
||||
following:</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
|
||||
Main
|
||||
</span></dt><dd>
|
||||
control and configuration
|
||||
</dd><dt><span class="term">
|
||||
Display
|
||||
</span></dt><dd>
|
||||
graphics commands images and video streams
|
||||
</dd><dt><span class="term">
|
||||
Inputs
|
||||
</span></dt><dd>
|
||||
keyboard and mouse inputs
|
||||
</dd><dt><span class="term">
|
||||
Cursor
|
||||
</span></dt><dd>
|
||||
pointer device position and cursor shape
|
||||
</dd><dt><span class="term">
|
||||
Playback
|
||||
</span></dt><dd>
|
||||
audio received from the server to be played by the client
|
||||
</dd><dt><span class="term">
|
||||
Record
|
||||
</span></dt><dd>
|
||||
audio captured on the client side
|
||||
</dd><dt><span class="term">
|
||||
Smartcard
|
||||
</span></dt><dd>
|
||||
passthrough of smartcard data from the client machine to the guest OS
|
||||
</dd><dt><span class="term">
|
||||
USB
|
||||
</span></dt><dd>
|
||||
redirection of USB devices plugged into the client to the guest OS
|
||||
</dd></dl></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_image_compression"></a>Image Compression</h4></div></div></div><p>Spice offers several image compression algorithms, which can be chosen
|
||||
on server initiation and dynamically at run-time. Quic is a Spice
|
||||
proprietary image compression technology based on the SFALIC
|
||||
algorithm. The Lempel-Ziv (LZ) algorithm is another option. Both Quic
|
||||
and LZ are local algorithms encoding each image separately. Global LZ
|
||||
(GLZ) is another proprietary Spice technology that uses LZ with
|
||||
history-based global dictionary. GLZ takes advantage of repeating
|
||||
patterns among images to shrink the traffic and save bandwidth, which
|
||||
is critical in a WAN environment. Spice also offers an automatic mode
|
||||
for compression selection per image, where the choice between LZ/GLZ
|
||||
and Quic is heuristically based on image properties. Conceptually,
|
||||
synthetic images are better compressed with LZ/GLZ and real images are
|
||||
better with Quic.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_video_compression"></a>Video Compression</h4></div></div></div><p>Spice uses loss-less compression for images sent to the
|
||||
client. However, video streams are handled differently. Spice server
|
||||
heuristically identifies video areas and sends them as a video stream
|
||||
coded using M-JPEG. This handling saves a lot of traffic, improving
|
||||
Spice performance, especially in a WAN environment. However, in some
|
||||
circumstances the heuristic behavior might cause low quality images
|
||||
(e.g. identifying updated text area as a video stream). Video
|
||||
streaming can be chosen on server initiation and dynamically at
|
||||
run-time.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_mouse_modes"></a>Mouse modes</h4></div></div></div><p>Spice supports two mouse modes: server and client. The mode can be
|
||||
changed dynamically and is negotiated between the client and the
|
||||
server.</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
|
||||
Server mouse
|
||||
</span></dt><dd>
|
||||
When a user clicks inside the Spice client window, the client mouse is
|
||||
captured and set invisible. In this mode, the server controls the
|
||||
mouse position on display. However, it might be problematic on WAN or
|
||||
on a loaded server, where mouse cursor might have some latency or
|
||||
non-responsiveness.
|
||||
</dd><dt><span class="term">
|
||||
Client mouse
|
||||
</span></dt><dd>
|
||||
Not captured and is used as the effective pointing device. To enable
|
||||
client mouse, the VDI host application must register an absolute
|
||||
pointing device (e.g. USB tablet in QEMU). This mode is appropriate
|
||||
for WAN or for a loaded server, since cursor has smooth motion and
|
||||
responsiveness. However, the cursor might lose synchronization
|
||||
(position and shape) for a while.
|
||||
</dd></dl></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_other_features"></a>Other Features</h4></div></div></div><div class="variablelist"><dl class="variablelist"><dt><span class="term">
|
||||
Multiple Monitors
|
||||
</span></dt><dd>
|
||||
any number of monitors is supported
|
||||
</dd><dt><span class="term">
|
||||
Arbitrary Resolution
|
||||
</span></dt><dd>
|
||||
when using the QXL driver, the resolution of the guest OS will be
|
||||
automatically adjusted to the size of the client window.
|
||||
</dd><dt><span class="term">
|
||||
USB Redirection
|
||||
</span></dt><dd>
|
||||
Spice can be used to redirect USB devices that are plugged in the
|
||||
client to the guest OS. This redirection can either be automatic (all
|
||||
newly plugged devices are redirected), or manual (the user selects
|
||||
which devices (s)he wants to redirect).
|
||||
</dd><dt><span class="term">
|
||||
Smartcard Redirection
|
||||
</span></dt><dd>
|
||||
data from smartcard that are inserted into the client machine can be
|
||||
passed through to the guest OS. The smartcard can be used by both the
|
||||
client OS and the guest OS.
|
||||
</dd><dt><span class="term">
|
||||
Bidirectional Audio
|
||||
</span></dt><dd>
|
||||
Spice supports audio playback and recording. Playback is compressed
|
||||
using the CELT algorithm
|
||||
</dd><dt><span class="term">
|
||||
Lip-sync
|
||||
</span></dt><dd>
|
||||
between video and audio. Available only when video streaming is
|
||||
enabled.
|
||||
</dd><dt><span class="term">
|
||||
Migration
|
||||
</span></dt><dd>
|
||||
switching channel connectivity for supporting server migration
|
||||
</dd><dt><span class="term">
|
||||
Pixmap and Palette caching
|
||||
</span></dt><dd>
|
||||
image data is cached on the client to avoid sending the same data
|
||||
</dd></dl></div></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ar01s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html>
|
@ -1,64 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>2. Using Spice</title><link rel="stylesheet" type="text/css" href="docbook-xsl.css" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="home" href="index.html" title="Spice User Manual" /><link rel="up" href="index.html" title="Spice User Manual" /><link rel="prev" href="ar01s01.html" title="1. Introduction" /><link rel="next" href="ar01s03.html" title="3. Ticketing" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><td width="20%" align="left"><a accesskey="p" href="ar01s01.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ar01s03.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_using_spice"></a>2. Using Spice</h2></div></div></div><div class="note" style="margin-left: 0; margin-right: 10%;"><h3 class="title">Note</h3><p>I’ll use <code class="literal">qemu-kvm</code> as a name for the executable. If you’re using a
|
||||
manually built qemu or a qemu without kvm then just replace <code class="literal">qemu-kvm</code>
|
||||
with your own binary. I’ll use <code class="literal">host$</code>, <code class="literal">client$</code> and <code class="literal">guest$</code> shell
|
||||
prompt notations to distinguish where the command should be the
|
||||
command. See section <a class="xref" href="go01.html" title="Glossary">Glossary</a> to be sure that you know
|
||||
difference between the host, client and guest. You can ignore the
|
||||
difference between guest, client and host if they are all running on
|
||||
the same machine.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_running_qemu_manually"></a>2.1. Running qemu manually</h3></div></div></div><p><span class="strong"><strong>The first thing to do</strong></span> is to create a guest image. You can use any
|
||||
raw device such as a clean logical volume, or an iSCSI lun. You may
|
||||
also use a file as the disk image for the guest. I’ll use a file
|
||||
created by <code class="literal">qemu-img</code> as a demonstration.</p><p>The following command will allocate a 10GB file. See <code class="literal">qemu-img</code> man
|
||||
page for further information.</p><pre class="programlisting">host$ qemu-img create /path/to/xp.img 10G</pre><p>Now that we created an image, we can now start with image
|
||||
population. I assume that you have a locally stored ISO of your
|
||||
favourite operating system so you can use it for installation.</p><pre class="programlisting">host$ qemu-kvm -machine vmport=off \
|
||||
-boot order=dc -vga qxl \
|
||||
-spice port=3001,disable-ticketing -soundhw hda \
|
||||
-device virtio-serial -chardev spicevmc,id=vdagent,debug=0,name=vdagent \
|
||||
-device virtserialport,chardev=vdagent,name=com.redhat.spice.0 \
|
||||
-cdrom /path/to/your.iso /path/to/your.img</pre><p>Let’s take a brief look at the qemu options that were used. The option
|
||||
<code class="literal">-machine vmport=off</code> disables VMWare IO port emulation, which is
|
||||
necessary for server mode mouse to work properly with spice. The option <code class="literal">-boot
|
||||
order=dc</code> specifies that the guest system should try to boot from the first
|
||||
cdrom and then fallback to the first disk, <code class="literal">-vga qxl</code> specifies that qemu uses
|
||||
a qxl graphics device.</p><p>The Spice <code class="literal">port</code> option defines what port will be used for
|
||||
communication with the client. The Spice option <code class="literal">disable-ticketing</code> is
|
||||
specifying that ticketing (simple authentication method) is not
|
||||
used. The virtio and chardev devices are required by the guest agent.</p><p>The <code class="literal">-soundhw hda</code> option provides an audio device for the guest to use for
|
||||
audio playback and recording. In order for spice audio to work properly, qemu
|
||||
must use the <span class="emphasis"><em>spice</em></span> audio driver. Depending on how qemu was built, however,
|
||||
this might not be the default audio driver. To ensure qemu uses the spice audio
|
||||
driver, you can set the environment variable <code class="literal">QEMU_AUDIO_DRV=spice</code>.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_basic_configuration"></a>2.2. Basic configuration</h3></div></div></div><p>This section will assume that you already have a running QEMU virtual
|
||||
machine, and that you are running it either through virt-manager,
|
||||
libvirt or through direct QEMU use, and that you want to enable Spice
|
||||
support for this virtual machine.</p><p><strong>Using virt-manager. </strong>Double-click on the virtual machine you are interested in, go to
|
||||
"View/Details". If the left pane has a "Display Spice" entry, then the
|
||||
virtual machine already has Spice support, and you can check the
|
||||
connection details (port number) by clicking on it. If it has no Spice
|
||||
entry, click on "Add Hardware", and add a "Graphics" element of type
|
||||
"Spice server". If the host and the client are not the same machine,
|
||||
you should check the "Listen on all public network interfaces"
|
||||
checkbox, otherwise you don’t need to make any changes.</p><p>You should also add a QXL video device. It can be done by
|
||||
double-clicking on a virtual machine, then by going to View/Details,
|
||||
and by clicking on "Add Hardware" if the virtual machine does not have
|
||||
a "Video QXL" item in its left pane. From the "Add hardware" dialog,
|
||||
you should then create a "Video" device whose model is "QXL".</p><p>After stopping and restarting the virtual machine, it should be
|
||||
accessible with a Spice client.</p><p>You can remove non-Spice display entries and non-QXL video entries
|
||||
from the virtual machine configuration.</p><p>If you go to "Edit/Preferences/VM Details" in the main virt-manager
|
||||
window, you can set Spice graphics type as the default setting for new
|
||||
virtual machines.</p><p><strong>Using libvirt. </strong>All libvirt examples will assume that the virtual machine to modify is
|
||||
<code class="literal">$vmname</code> and that virsh is using the correct libvirt connection by
|
||||
default.</p><p>To add Spice support to an existing virtual machine managed by
|
||||
libvirt, you need to edit it:</p><pre class="programlisting">host$ virsh edit $vmname</pre><p>and then add a Spice graphics element:</p><pre class="programlisting"><graphics type='spice'/></pre><p>You should also add a QXL video device</p><pre class="programlisting"><video>
|
||||
<model type='qxl'/>
|
||||
</video></pre><p>After stopping and restarting the virtual machine <code class="literal">$vmname</code>, it should
|
||||
be accessible through Spice. You can check the connection parameters
|
||||
with:</p><pre class="programlisting">host$ virsh domdisplay $vmname</pre><p><strong>Using QEMU. </strong>To enable Spice support to your virtual machine, you only need to
|
||||
append the following to your QEMU command line:</p><pre class="programlisting">-spice port=3001,disable-ticketing</pre><p>This will setup a Spice session listening on port 3001 exporting your
|
||||
virtual machine display.</p><p>You can also add a QXL device by appending <code class="literal">-vga qxl</code> to the command
|
||||
line.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_connecting_to_the_guest"></a>2.3. Connecting to the guest</h3></div></div></div><p>The following section will show you basic usage of the Spice
|
||||
client. The example connection will be related to the qemu instance
|
||||
started in the previous sections.</p><p>Be aware that the port used for spice communication (port 3001 in our
|
||||
case) should not be blocked by firewall. Host <code class="literal">myhost</code> is referring to
|
||||
the machine which is running our qemu instance.</p><pre class="programlisting">client$ remote-viewer spice://myhost:3001</pre></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ar01s01.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ar01s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html>
|
@ -1,20 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>3. Ticketing</title><link rel="stylesheet" type="text/css" href="docbook-xsl.css" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="home" href="index.html" title="Spice User Manual" /><link rel="up" href="index.html" title="Spice User Manual" /><link rel="prev" href="ar01s02.html" title="2. Using Spice" /><link rel="next" href="ar01s04.html" title="4. Agent" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><td width="20%" align="left"><a accesskey="p" href="ar01s02.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ar01s04.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ticketing"></a>3. Ticketing</h2></div></div></div><p>Spice does not support multiple connections to the same QEMU instance
|
||||
by default. So anybody who will connect to the same host and port can
|
||||
simply take over your session. You can solve this problem by using
|
||||
ticketing.</p><p>Ticketing is a simple authentication system which enables you to set
|
||||
simple tickets to a VM. Client has to authenticate before the
|
||||
connection can be established. See the Spice option <code class="literal">password</code> in the
|
||||
following examples.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_configuration"></a>3.1. Configuration</h3></div></div></div><p><strong>Using virt-manager. </strong>To set a Spice password for a virtual machine, go to this machine
|
||||
details in virt-manager, and then click on the "Display Spice" item in
|
||||
the left pane, and enter the ticket you want to use in the "Password"
|
||||
field.</p><p><strong>Using libvirt. </strong>All you need to do is to append a <code class="literal">passwd</code> attribute to the Spice
|
||||
graphics node for your virtual machine:</p><pre class="programlisting"><graphics type='spice' passwd='mysecretpassword'/></pre><p><strong>Using QEMU. </strong>Adding a ticket with QEMU involves a slight modification of the
|
||||
<code class="literal">-spice</code> parameter used when running QEMU:</p><pre class="programlisting">-spice port=3001,password=mysecretpassword</pre></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_client"></a>3.2. Client</h3></div></div></div><p>When you start the client as usual, if ticketing was enabled on the
|
||||
host, remote-viewer will pop up a window asking for a password before
|
||||
starting the Spice session. It won’t be established if an incorrect
|
||||
ticket was passed to the client.</p><div class="important" style="margin-left: 0; margin-right: 10%;"><h3 class="title">Important</h3><p>You might have figured out that passing tickets as a
|
||||
command-line option isn’t very safe. It’s not safe as everybody with
|
||||
access to the host can read it from the output of <code class="literal">ps(1)</code>. To prevent
|
||||
this, the ticket can be also set by using the QEMU console command
|
||||
<code class="literal">spice._set_ticket</code>.</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ar01s02.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ar01s04.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html>
|
@ -1,25 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>4. Agent</title><link rel="stylesheet" type="text/css" href="docbook-xsl.css" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="home" href="index.html" title="Spice User Manual" /><link rel="up" href="index.html" title="Spice User Manual" /><link rel="prev" href="ar01s03.html" title="3. Ticketing" /><link rel="next" href="ar01s05.html" title="5. USB redirection" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><td width="20%" align="left"><a accesskey="p" href="ar01s03.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ar01s05.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="agent"></a>4. Agent</h2></div></div></div><p>Agent support allows better integration with the guest. For example,
|
||||
it allows copy and paste between the guest and the host OSes, dynamic
|
||||
resolution changes when the client window is resized/full-screened,
|
||||
file transfers through drag and drop, …</p><p>The agent is a daemon/service running in the guest OS so it must be
|
||||
installed if it was not installed by default during the guest OS
|
||||
installation. It also relies on a virtio-serial PCI device and a
|
||||
dedicated spicevmc char device to achieve communication between the
|
||||
guest and the host. These devices must be added to the virtual machine
|
||||
for the agent to work in the guest.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_configuration_2"></a>4.1. Configuration</h3></div></div></div><p><strong>Using virt-manager. </strong>The needed devices can be added from the virtual machine
|
||||
details. Click on "Add hardware" and then add a "Channel" device with
|
||||
type "Spice agent (spicevmc)". This will automatically add the needed
|
||||
virtio-serial device in addition to the spicevmc channel.</p><p><strong>Using libvirt. </strong>Two distinct devices must be added:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
|
||||
<a class="ulink" href="http://libvirt.org/formatdomain.html#elementsControllers" target="_top">a virtio serial device</a>
|
||||
</li><li class="listitem">
|
||||
<a class="ulink" href="http://libvirt.org/formatdomain.html#elementCharChannel" target="_top">a spicevmc channel</a>
|
||||
</li></ul></div><pre class="programlisting"><devices>
|
||||
<controller type='virtio-serial' index='0'/>
|
||||
<channel type='spicevmc'>
|
||||
<target type='virtio' name='com.redhat.spice.0'/>
|
||||
</channel>
|
||||
</devices></pre><p><strong>Using QEMU. </strong>Adding the following parameters to your QEMU command line will enable
|
||||
the needed devices for agent support in the guest OS:</p><pre class="programlisting">-device virtio-serial \
|
||||
-chardev spicevmc,id=vdagent,debug=0,name=vdagent \
|
||||
-device virtserialport,chardev=vdagent,name=com.redhat.spice.0 \</pre></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ar01s03.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ar01s05.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html>
|
@ -1,46 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>5. USB redirection</title><link rel="stylesheet" type="text/css" href="docbook-xsl.css" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="home" href="index.html" title="Spice User Manual" /><link rel="up" href="index.html" title="Spice User Manual" /><link rel="prev" href="ar01s04.html" title="4. Agent" /><link rel="next" href="ar01s06.html" title="6. Streaming Agent" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><td width="20%" align="left"><a accesskey="p" href="ar01s04.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ar01s06.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_usb_redirection"></a>5. USB redirection</h2></div></div></div><p>With USB redirection, USB devices plugged into the client machine can
|
||||
be transparently redirected to the guest OS. This redirection can
|
||||
either be automatic (all newly plugged devices are redirected), or
|
||||
manual (the user selects which devices (s)he wants to redirect).</p><p>For redirection to work, the virtual machine must have an USB2 EHCI
|
||||
controller (this implies 3 additional UHCI controllers). It also needs
|
||||
to have Spice channels for USB redirection. The number of such
|
||||
channels correspond to the number of USB devices that it will be
|
||||
possible to redirect at the same time.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_configuration_3"></a>5.1. Configuration</h3></div></div></div><p><strong>Using virt-manager. </strong>Virtual machines created with virt-manager should have a USB
|
||||
controller by default. In the virtual machine details, select
|
||||
"Controller USB" in the left pane, and make sure its model is set to
|
||||
USB2. You can then click on "Add Hardware" and add as many "USB
|
||||
Redirection" items as the number of USB devices you want to be able to
|
||||
redirect simultaneously.</p><p><strong>Using libvirt. </strong>You need to add the needed USB controllers to the libvirt XML (make
|
||||
sure there is no pre-existing USB controller in your virtual machine
|
||||
XML before doing this), as well as one Spice USB redirection channel
|
||||
per device you want to redirect simultaneously.</p><pre class="programlisting"><controller type='usb' index='0' model='ich9-ehci1'/>
|
||||
<controller type='usb' index='0' model='ich9-uhci1'>
|
||||
<master startport='0'/>
|
||||
</controller>
|
||||
<controller type='usb' index='0' model='ich9-uhci2'>
|
||||
<master startport='2'/>
|
||||
</controller>
|
||||
<controller type='usb' index='0' model='ich9-uhci3'>
|
||||
<master startport='4'/>
|
||||
</controller>
|
||||
<redirdev bus='usb' type='spicevmc'/>
|
||||
<redirdev bus='usb' type='spicevmc'/>
|
||||
<redirdev bus='usb' type='spicevmc'/>
|
||||
<redirdev bus='usb' type='spicevmc'/></pre><p><strong>Using QEMU. </strong>Similarly to libvirt, we need to add EHCI/UHCI controllers to QEMU
|
||||
command line, and we also need to add one Spice redirection channel
|
||||
per device we want to redirect simultaneously.</p><pre class="programlisting">-device ich9-usb-ehci1,id=usb \
|
||||
-device ich9-usb-uhci1,masterbus=usb.0,firstport=0,multifunction=on \
|
||||
-device ich9-usb-uhci2,masterbus=usb.0,firstport=2 \
|
||||
-device ich9-usb-uhci3,masterbus=usb.0,firstport=4 \
|
||||
-chardev spicevmc,name=usbredir,id=usbredirchardev1 \
|
||||
-device usb-redir,chardev=usbredirchardev1,id=usbredirdev1 \
|
||||
-chardev spicevmc,name=usbredir,id=usbredirchardev2 \
|
||||
-device usb-redir,chardev=usbredirchardev2,id=usbredirdev2 \
|
||||
-chardev spicevmc,name=usbredir,id=usbredirchardev3 \
|
||||
-device usb-redir,chardev=usbredirchardev3,id=usbredirdev3</pre></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_client_2"></a>5.2. Client</h3></div></div></div><p>The client needs to have support for USB redirection. In
|
||||
remote-viewer, you can select which USB devices to redirect in
|
||||
"File/USB device" selection once the Spice connection is
|
||||
established. There are also various command line redirection options
|
||||
which are described when running remote-viewer with <code class="literal">--help-spice</code>.</p><p>To get USB redirection working on Windows clients, you need to install
|
||||
<a class="ulink" href="http://www.spice-space.org/download/windows/usbdk/" target="_top">UsbDk</a></p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ar01s04.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ar01s06.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html>
|
@ -1,24 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>6. Streaming Agent</title><link rel="stylesheet" type="text/css" href="docbook-xsl.css" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="home" href="index.html" title="Spice User Manual" /><link rel="up" href="index.html" title="Spice User Manual" /><link rel="prev" href="ar01s05.html" title="5. USB redirection" /><link rel="next" href="ar01s07.html" title="7. CAC smartcard redirection" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><td width="20%" align="left"><a accesskey="p" href="ar01s05.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ar01s07.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="streamingagent"></a>6. Streaming Agent</h2></div></div></div><p>The SPICE streaming agent allows to send an encoded video stream of the guest
|
||||
desktop to the client.</p><p>The streaming agent is a daemon/service running in the guest OS so it must be
|
||||
installed if it does not yet exist on the guest system. It relies on a
|
||||
dedicated spiceport char device to achieve communication between the guest and
|
||||
the host. This device must be added to the virtual machine as described below
|
||||
for the streaming agent to work in the guest.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_configuration_4"></a>6.1. Configuration</h3></div></div></div><p><strong>Using virt-manager. </strong>The needed device can be added from the virtual machine
|
||||
details. Click on "Add hardware" and then add a "Channel" device with
|
||||
type "Spice port (spiceport)". The port should be named
|
||||
<code class="literal">org.spice-space.stream.0</code>, and the channel should also be
|
||||
<code class="literal">org.spice-space.stream.0</code>.</p><p><strong>Using libvirt. </strong>Two distinct devices must be added:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
|
||||
<a class="ulink" href="http://libvirt.org/formatdomain.html#elementsControllers" target="_top">a virtio serial
|
||||
device</a> if there is not one yet in the domain definition
|
||||
</li><li class="listitem">
|
||||
<a class="ulink" href="http://libvirt.org/formatdomain.html#elementsCharSpiceport" target="_top">a spiceport channel</a>
|
||||
</li></ul></div><pre class="programlisting"><devices>
|
||||
<controller type='virtio-serial' index='0'/>
|
||||
<channel type='spiceport'>
|
||||
<source channel='org.spice-space.stream.0'/>
|
||||
<target type='virtio' name='org.spice-space.stream.0'/>
|
||||
</channel>
|
||||
</devices></pre><p><strong>Using QEMU. </strong>Adding the following parameters to your QEMU command line will enable
|
||||
the needed devices for agent support in the guest OS:</p><pre class="programlisting">-device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel1,id=channel1,name=org.spice-space.stream.0 \
|
||||
-chardev spiceport,name=org.spice-space.stream.0,id=charchannel1</pre></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ar01s05.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ar01s07.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html>
|
@ -1,18 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>7. CAC smartcard redirection</title><link rel="stylesheet" type="text/css" href="docbook-xsl.css" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="home" href="index.html" title="Spice User Manual" /><link rel="up" href="index.html" title="Spice User Manual" /><link rel="prev" href="ar01s06.html" title="6. Streaming Agent" /><link rel="next" href="ar01s08.html" title="8. Multiple monitor support" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><td width="20%" align="left"><a accesskey="p" href="ar01s06.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ar01s08.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_cac_smartcard_redirection"></a>7. CAC smartcard redirection</h2></div></div></div><p>Spice has a dedicated channel for smartcard redirection, using
|
||||
libcacard, which currently supports limited CAC emulation.</p><p>You may consider redirecting your USB card reader instead. This is
|
||||
easier to setup but will prevent from sharing the smartcard with both
|
||||
the client and the remote simultaneously.</p><p>libcacard is actually emulating a simple CAC card, sharing the card
|
||||
and its certificates. It can successfully be used with the coolkey
|
||||
PKCS#11 module.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_configuration_5"></a>7.1. Configuration</h3></div></div></div><p><strong>Using virt-manager. </strong>In the hardware details, click on "Add Hardware", then select
|
||||
"Smartcard". Add a "passthrough" device type.</p><p><strong>Using libvirt. </strong>Setup a "passthrough" smartcard of type "spicevmc" on a CCID
|
||||
controller:</p><pre class="programlisting"><controller type='ccid' index='0'/>
|
||||
<smartcard mode='passthrough' type='spicevmc'>
|
||||
<address type='ccid' controller='0' slot='0'/>
|
||||
</smartcard></pre><p><strong>Using QEMU. </strong>With the qemu command line, you must add a USB CCID device, and a
|
||||
"ccid-card-passthru" associated with a "spicevmc" channel with the
|
||||
name "smartcard":</p><pre class="programlisting">-device usb-ccid -chardev spicevmc,name=smartcard,id=ccid -device ccid-card-passthru,chardev=ccid</pre></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_client_3"></a>7.2. Client</h3></div></div></div><p>In order for the client certificates to be shared with the remote, you
|
||||
need a NSS database configured to access the smartcard. Please look
|
||||
for instructions on coolkey or NSS setup and make sure you certficates
|
||||
can be listed with certutil.</p><div class="note" style="margin-left: 0; margin-right: 10%;"><h3 class="title">Note</h3><p>Most Spice clients disable smartcard support by default, and
|
||||
need <code class="literal">--spice-smartcard</code> or similar configuration.</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ar01s06.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ar01s08.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html>
|
@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>8. Multiple monitor support</title><link rel="stylesheet" type="text/css" href="docbook-xsl.css" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="home" href="index.html" title="Spice User Manual" /><link rel="up" href="index.html" title="Spice User Manual" /><link rel="prev" href="ar01s07.html" title="7. CAC smartcard redirection" /><link rel="next" href="ar01s09.html" title="9. TLS" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><td width="20%" align="left"><a accesskey="p" href="ar01s07.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ar01s09.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_multiple_monitor_support"></a>8. Multiple monitor support</h2></div></div></div><p>When using Spice, it’s possible to use multiple monitors. For that,
|
||||
the guest must have multiple QXL devices (for Windows guests), or a
|
||||
single QXL device configured to support multiple heads (for Linux
|
||||
guests).</p><p>Before following the instructions in this section, make sure your
|
||||
virtual machine already has a QXL device. If that is not the case,
|
||||
refer to this section. Your guest OS will also need to have the QXL
|
||||
driver installed or multiple monitor support will not work.</p><p>Once your virtual machine is using a QXL device, you don’t need to
|
||||
make any other change to get multiple heads in a Linux guest. The
|
||||
following paragraph will deal with adding multiple QXL devices to get
|
||||
multiple monitors in a Windows guest.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_configuration_6"></a>8.1. Configuration</h3></div></div></div><p><strong>Using virt-manager. </strong>To add an additional QXL device for Windows guests, simply go to your
|
||||
virtual machine details. Check that you already have a "Video QXL"
|
||||
device, if not, click on "Add Hardware", and add a "Video" device with
|
||||
model "QXL". This can also work with Linux guests if your are willing
|
||||
to configure X.Org to use Xinerama (instead of XRandR).</p><p>If you are using a new enough distribution (for example Fedora 19),
|
||||
and if your virtual machine already has a QXL device, you should not
|
||||
need to make any changes in virt-manager. If you are using an older
|
||||
distribution, you can’t do the required changes from virt-manager,
|
||||
you’ll need to edit libvirt XML as described on this blog post.</p><p><strong>Using libvirt. </strong>To add an additional QXL device to your virtual machine managed by
|
||||
libvirt, you simply need to append a new video node whose model is
|
||||
QXL:</p><pre class="programlisting"><video>
|
||||
<model type='qxl'/>
|
||||
</video>
|
||||
<video>
|
||||
<model type='qxl'/>
|
||||
</video></pre><p><strong>Using QEMU. </strong>To get a second QXL device in your virtual machine, you need to append
|
||||
<code class="literal">-device qxl</code> to your QEMU command line in addition to the <code class="literal">-vga qxl</code>
|
||||
that is already there:</p><pre class="programlisting">-vga qxl -device qxl</pre></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_client_4"></a>8.2. Client</h3></div></div></div><p>You can enable additional displays from the "View → Displays"
|
||||
menu in remote-viewer.</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ar01s07.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ar01s09.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html>
|
@ -1,81 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>9. TLS</title><link rel="stylesheet" type="text/css" href="docbook-xsl.css" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="home" href="index.html" title="Spice User Manual" /><link rel="up" href="index.html" title="Spice User Manual" /><link rel="prev" href="ar01s08.html" title="8. Multiple monitor support" /><link rel="next" href="ar01s10.html" title="10. SASL" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><td width="20%" align="left"><a accesskey="p" href="ar01s08.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ar01s10.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_tls"></a>9. TLS</h2></div></div></div><p>TLS support allows to encrypt all/some of the channels Spice uses for
|
||||
its communication. A separate port is used for the encrypted
|
||||
channels. When connecting through a TLS channel, the Spice client will
|
||||
verify the certificate sent by the host. It will check that this
|
||||
certificate matches the hostname it’s connecting, and that this
|
||||
certificate is signed by a known certificate authority (CA). This can
|
||||
be achieved by either getting the host certificate signed by an
|
||||
official CA, or by passing to the client the certificate of the
|
||||
authority which signed the host certificate. The latter allows the use
|
||||
of self-signed certificates.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_configuration_7"></a>9.1. Configuration</h3></div></div></div><div class="important" style="margin-left: 0; margin-right: 10%;"><h3 class="title">Important</h3><p>It’s not currently possible to define the CA
|
||||
certificate/host certificate to use for the TLS connection using
|
||||
virt-manager, see the next section for how to enable this using
|
||||
libvirt.</p></div><p><strong>Using libvirt. </strong>The certificate must be specified in libvirtd configuration file in
|
||||
<span class="emphasis"><em>/etc/libvirt/qemu.conf</em></span> (or in <span class="emphasis"><em>~/.config/libvirt/qemu.conf</em></span> if you
|
||||
are using a session libvirt). See the documentation in this file
|
||||
reproduced below:</p><pre class="literallayout"># Enable use of TLS encryption on the SPICE server.
|
||||
#
|
||||
# It is necessary to setup CA and issue a server certificate
|
||||
# before enabling this.
|
||||
#
|
||||
spice_tls = 1</pre><pre class="literallayout"># Use of TLS requires that x509 certificates be issued. The
|
||||
# default it to keep them in /etc/pki/libvirt-spice. This directory
|
||||
# must contain
|
||||
#
|
||||
# ca-cert.pem - the CA master certificate
|
||||
# server-cert.pem - the server certificate signed with ca-cert.pem
|
||||
# server-key.pem - the server private key
|
||||
#
|
||||
# This option allows the certificate directory to be changed.
|
||||
#
|
||||
spice_tls_x509_cert_dir = "/etc/pki/libvirt-spice"</pre><p>Once the above is done, when the domain is running, you should get
|
||||
something like what is below if you are leaving Spice port allocation
|
||||
up to libvirt:</p><div class="sidebar"><div class="titlepage"><div><div><p class="title"><strong></strong></p></div></div></div><p>TODO proof-read the following section:</p></div><pre class="programlisting">host$ virsh domdisplay
|
||||
spice://127.0.0.1?tls-port=5901
|
||||
host$</pre><p>This means that the connection is possible both through TLS and
|
||||
without any encryption. You can edit the libvirt graphics node if you
|
||||
want to change that behaviour and only allow connections through TLS:</p><pre class="programlisting"><graphics type='spice' autoport='yes' defaultMode='secure'/></pre><p><strong>Using QEMU. </strong>QEMU expects the certificates to be named the same way as what libvirt
|
||||
expects in the previous paragraph. The directory where these
|
||||
certificates can be found is specified as options to the <code class="literal">-spice</code>
|
||||
command line parameters:</p><pre class="programlisting">-spice port=5900,tls-port=5901,disable-ticketing,x509-dir=/etc/pki/libvirt-spice</pre></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_client_5"></a>9.2. Client</h3></div></div></div><p>We need to change 2 things when starting the client:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
|
||||
specify the tls port to use
|
||||
</li><li class="listitem">
|
||||
specify the CA certificate to use when verifying the host certificate
|
||||
</li></ul></div><p>With remote-viewer, this is done this way:</p><pre class="programlisting">client$ remote-viewer --spice-ca-file=/etc/pki/libvirt-spice/ca-cert.ca spice://myhost?tls-port=5901</pre></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_generating_self_signed_certificates"></a>9.3. Generating self-signed certificates</h3></div></div></div><p>The following script can be used to create the various certificates
|
||||
needed to use a TLS Spice connection. Make sure to substitute the
|
||||
hostname of your Spice host in the subject of the certificate signing
|
||||
request.</p><pre class="programlisting">SERVER_KEY=server-key.pem
|
||||
|
||||
# creating a key for our ca
|
||||
if [ ! -e ca-key.pem ]; then
|
||||
openssl genrsa -des3 -out ca-key.pem 1024
|
||||
fi
|
||||
# creating a ca
|
||||
if [ ! -e ca-cert.pem ]; then
|
||||
openssl req -new -x509 -days 1095 -key ca-key.pem -out ca-cert.pem -utf8 -subj "/C=IL/L=Raanana/O=Red Hat/CN=my CA"
|
||||
fi
|
||||
# create server key
|
||||
if [ ! -e $SERVER_KEY ]; then
|
||||
openssl genrsa -out $SERVER_KEY 1024
|
||||
fi
|
||||
# create a certificate signing request (csr)
|
||||
if [ ! -e server-key.csr ]; then
|
||||
openssl req -new -key $SERVER_KEY -out server-key.csr -utf8 -subj "/C=IL/L=Raanana/O=Red Hat/CN=myhostname.example.com"
|
||||
fi
|
||||
# signing our server certificate with this ca
|
||||
if [ ! -e server-cert.pem ]; then
|
||||
openssl x509 -req -days 1095 -in server-key.csr -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem
|
||||
fi
|
||||
|
||||
# now create a key that doesn't require a passphrase
|
||||
openssl rsa -in $SERVER_KEY -out $SERVER_KEY.insecure
|
||||
mv $SERVER_KEY $SERVER_KEY.secure
|
||||
mv $SERVER_KEY.insecure $SERVER_KEY
|
||||
|
||||
# show the results (no other effect)
|
||||
openssl rsa -noout -text -in $SERVER_KEY
|
||||
openssl rsa -noout -text -in ca-key.pem
|
||||
openssl req -noout -text -in server-key.csr
|
||||
openssl x509 -noout -text -in server-cert.pem
|
||||
openssl x509 -noout -text -in ca-cert.pem</pre></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ar01s08.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ar01s10.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html>
|
@ -1,16 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>10. SASL</title><link rel="stylesheet" type="text/css" href="docbook-xsl.css" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="home" href="index.html" title="Spice User Manual" /><link rel="up" href="index.html" title="Spice User Manual" /><link rel="prev" href="ar01s09.html" title="9. TLS" /><link rel="next" href="ar01s11.html" title="11. Folder sharing" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><td width="20%" align="left"><a accesskey="p" href="ar01s09.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ar01s11.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_sasl"></a>10. SASL</h2></div></div></div><p>Spice server and client have support for SASL authentication. When
|
||||
using QEMU, <span class="emphasis"><em>/etc/sasl2/qemu.conf</em></span> will be used as a configuration
|
||||
file. For testing, you can use the <code class="literal">digest-md5</code> mechanism, and populate
|
||||
a test database using <code class="literal">saslpasswd2 -f /etc/qemu/passwd.db -c
|
||||
foo</code>. These files have to be readable by the QEMU process that will
|
||||
handle your VM.</p><p>To troubleshoot SASL issues, running <code class="literal">strace -e open</code> on the QEMU
|
||||
process can be a useful first step.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_configuration_8"></a>10.1. Configuration</h3></div></div></div><p><strong>Using virt-manager. </strong>It’s currently not possible to enable SASL from virt-manager.</p><p><strong>Using libvirt. </strong>SASL support for SPICE has been added to libvirt mid-October 2013 so
|
||||
you need a libvirt version that was released after this date. To
|
||||
enable SASL, you need to add <code class="literal">spice_sasl = 1</code> in <span class="emphasis"><em>/etc/libvirt/qemu.conf</em></span>
|
||||
for the system libvirtd instance, and to <span class="emphasis"><em>~/.config/libvirt/qemu.conf</em></span>
|
||||
for the session libvirtd instance.</p><p><strong>Using QEMU. </strong>Using SASL with QEMU involves a slight modification of the <code class="literal">-spice</code>
|
||||
parameter used when running QEMU:</p><pre class="programlisting">-spice port=3001,sasl</pre></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_client_6"></a>10.2. Client</h3></div></div></div><p>When you start the client as usual, if SASL was enabled on the host,
|
||||
remote-viewer will pop up a window asking for a password before
|
||||
starting the Spice session. It won’t be established if an incorrect
|
||||
ticket was passed to the client.</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ar01s09.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ar01s11.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html>
|
@ -1,23 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>11. Folder sharing</title><link rel="stylesheet" type="text/css" href="docbook-xsl.css" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="home" href="index.html" title="Spice User Manual" /><link rel="up" href="index.html" title="Spice User Manual" /><link rel="prev" href="ar01s10.html" title="10. SASL" /><link rel="next" href="ar01s12.html" title="12. GL acceleration (virgl)" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><td width="20%" align="left"><a accesskey="p" href="ar01s10.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ar01s12.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_folder_sharing"></a>11. Folder sharing</h2></div></div></div><p>The Spice client can share a folder with the remote guest. By default folder
|
||||
sharing is disabled. Use the remote-viewer "File" → "Preferences" menu
|
||||
to enable it. The default shared directory is the XDG Public Share directory
|
||||
(ie <span class="emphasis"><em>~/Public</em></span> if you use a regular system). You may specify a different folder
|
||||
with <code class="literal">--spice-share-dir</code> client option.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_configuration_9"></a>11.1. Configuration</h3></div></div></div><p><strong>Using virt-manager. </strong>In the hardware details, click on "Add Hardware", then select
|
||||
"Channel". Add a "Spice port" device type with the
|
||||
"org.spice-space.webdav.0" name.</p><p><strong>Using libvirt. </strong>In order to set up folder sharing, qemu needs to expose a
|
||||
<code class="literal">org.spice-space.webdav.0</code> virtio port, associated with a
|
||||
corresponding Spice port:</p><pre class="programlisting"><devices>
|
||||
<channel type='spiceport'>
|
||||
<source channel='org.spice-space.webdav.0'/>
|
||||
<target type='virtio' name='org.spice-space.webdav.0'/>
|
||||
</channel>
|
||||
</devices></pre><p><strong>Using QEMU. </strong>In order to set up folder sharing, qemu needs to expose a
|
||||
<code class="literal">org.spice-space.webdav.0</code> virtio port, associated with a
|
||||
corresponding Spice port:</p><pre class="programlisting">-device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel1,id=channel1,name=org.spice-space.webdav.0 -chardev spiceport,name=org.spice-space.webdav.0,id=charchannel1</pre></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_guest_configuration"></a>11.2. Guest configuration</h3></div></div></div><p><strong>Windows. </strong>In a Windows guest, you must then install
|
||||
<a class="ulink" href="https://www.spice-space.org/download/windows/spice-webdavd/" target="_top">spice-webdavd</a>
|
||||
service.</p><p><strong>Linux. </strong>With a Linux guest, you must install the spice-webdavd service (the
|
||||
sources are available at <a class="ulink" href="https://git.gnome.org/browse/phodav" target="_top">https://git.gnome.org/browse/phodav</a>). The
|
||||
folder will show up in GNOME Files network places (or Nautilus). It
|
||||
can then be mounted and browsed in traditional applications thanks to
|
||||
<code class="literal">gvfs-fuse</code>.</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ar01s10.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ar01s12.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html>
|
@ -1,20 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>12. GL acceleration (virgl)</title><link rel="stylesheet" type="text/css" href="docbook-xsl.css" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="home" href="index.html" title="Spice User Manual" /><link rel="up" href="index.html" title="Spice User Manual" /><link rel="prev" href="ar01s11.html" title="11. Folder sharing" /><link rel="next" href="ar01s13.html" title="13. QEMU Spice reference" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><td width="20%" align="left"><a accesskey="p" href="ar01s11.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ar01s13.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_gl_acceleration_virgl"></a>12. GL acceleration (virgl)</h2></div></div></div><p>OpenGL acceleration is currently local only (it has to go through a Unix socket)
|
||||
and it needs guest support. It’s currently limited to recent linux
|
||||
distributions (for example Fedora 24).</p><p>Host-side, you need qemu 2.6, libvirt 1.3.3 and spice 0.13.1, as well as a 4.4
|
||||
Linux kernel and Mesa 11.1.</p><p>Client-side, you need spice-gtk 0.31.</p><p>Guest-side, you need Mesa 11.1 and a 4.4 Linux kernel.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_configuration_10"></a>12.1. Configuration</h3></div></div></div><p><strong>Using libvirt. </strong>You need to add a virtio-gpu video device to your virtual machine instead of QXL.</p><pre class="programlisting"><video>
|
||||
<model type='virtio' heads='1'>
|
||||
<acceleration accel3d='yes'/>
|
||||
</model>
|
||||
</video></pre><p>Then you need to enable OpenGL on your SPICE graphics node:</p><pre class="programlisting"><graphics type='spice' autoport='no'>
|
||||
<gl enable='yes'/>
|
||||
</graphics></pre><p>You don’t need any port/address as they won’t be usable with
|
||||
GL.</p><p><strong>Using QEMU. </strong>You need to add a virtio-gpu device on QEMU command line,
|
||||
as well as enable GL with SPICE. port/tls-port/addr arguments
|
||||
won’t be used in this setup. You need to configure a Unix socket to
|
||||
connect to the VM display.</p><pre class="programlisting">-device virtio-vga,virgl=on -spice gl=on,unix,addr=/run/user/1000/spice.sock</pre></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_connecting_to_the_guest_2"></a>12.2. Connecting to the guest</h3></div></div></div><p>Connecting to the guest when virgl is in use is slightly different
|
||||
than usual</p><p><strong>If libvirt is being used. </strong>
|
||||
</p><pre class="programlisting">client$ virt-viewer -a $vmname</pre><p>
|
||||
</p><p><strong>If a Unix socket has been set on QEMU command line. </strong>
|
||||
</p><pre class="programlisting">client$ remote-viewer spice+unix:///run/user/1000/spice.sock</pre><p>
|
||||
</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ar01s11.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ar01s13.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html>
|
@ -1,34 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>13. QEMU Spice reference</title><link rel="stylesheet" type="text/css" href="docbook-xsl.css" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="home" href="index.html" title="Spice User Manual" /><link rel="up" href="index.html" title="Spice User Manual" /><link rel="prev" href="ar01s12.html" title="12. GL acceleration (virgl)" /><link rel="next" href="ar01s14.html" title="14. Spice guest additions" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><td width="20%" align="left"><a accesskey="p" href="ar01s12.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ar01s14.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_qemu_spice_reference"></a>13. QEMU Spice reference</h2></div></div></div><div class="sidebar"><div class="titlepage"><div><div><p class="title"><strong></strong></p></div></div></div><p>TODO, incomplete</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_command_line_options"></a>13.1. Command line options</h3></div></div></div><p>They are covered in the
|
||||
<a class="ulink" href="http://qemu.weilnetz.de/qemu-doc.html#index-g_t_002dspice-58" target="_top">QEMU
|
||||
online documentation</a>. Basic syntax is <code class="literal">-spice <spice_options></code>.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_qxl_command_line_options"></a>13.2. QXL command line options</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
|
||||
ram_size
|
||||
</li><li class="listitem">
|
||||
vram_size
|
||||
</li><li class="listitem">
|
||||
revision
|
||||
</li><li class="listitem">
|
||||
debug
|
||||
</li><li class="listitem">
|
||||
guestdebug
|
||||
</li><li class="listitem">
|
||||
cmdlog
|
||||
</li><li class="listitem">
|
||||
ram_size_mb
|
||||
</li><li class="listitem">
|
||||
vram_size_mb
|
||||
</li><li class="listitem">
|
||||
vram64_size_mb
|
||||
</li><li class="listitem">
|
||||
vgamem_mb
|
||||
</li><li class="listitem">
|
||||
surfaces
|
||||
</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_qemu_console_spice_commands"></a>13.3. QEMU console Spice commands</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
|
||||
<code class="literal">set_password spice <password> [keep|disconnect]</code> Set the spice connection ticket (one time password). An empty password prevents any connection. keep/disconnect indicates what to do if a client is already connected when the command is issued.
|
||||
</li><li class="listitem">
|
||||
<code class="literal">expire_password</code>
|
||||
</li><li class="listitem">
|
||||
<code class="literal">client_migrate_info</code>
|
||||
</li><li class="listitem">
|
||||
<code class="literal">info spice</code> Show current spice state
|
||||
</li></ul></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ar01s12.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ar01s14.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html>
|
@ -1,18 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>14. Spice guest additions</title><link rel="stylesheet" type="text/css" href="docbook-xsl.css" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="home" href="index.html" title="Spice User Manual" /><link rel="up" href="index.html" title="Spice User Manual" /><link rel="prev" href="ar01s13.html" title="13. QEMU Spice reference" /><link rel="next" href="ar01s15.html" title="15. Installation" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><td width="20%" align="left"><a accesskey="p" href="ar01s13.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ar01s15.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="guest-additions"></a>14. Spice guest additions</h2></div></div></div><p>While you will be able to remotely access your virtual machine through
|
||||
Spice without making any change to the virtual machine configuration,
|
||||
you can get better integration if you tweak it specially for Spice.</p><p>If your virtual machine has a QXL video device and you install the
|
||||
corrresponding guest driver, your guest will support higher
|
||||
resolutions, multiple monitors, resizing to arbitrary resolutions, …</p><p>Installing the Spice vdagent in your guest will let you copy and paste
|
||||
between your guest and client OSes, to drag and drop files between the
|
||||
2 OSes, … In order for the agent to work, your virtual machine must
|
||||
have a virtio serial device (and the corresponding guest drivers) as
|
||||
well as a Spice spicevmc channel.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_windows_guest"></a>14.1. Windows guest</h3></div></div></div><p>The recommended way of getting all the needed drivers installed is to
|
||||
use the all-in-one Spice guest tools installer which can be found on
|
||||
<a class="ulink" href="http://spice-space.org/download/windows/spice-guest-tools/" target="_top">spice-space.org</a>.</p><p>If you want to manually install them, the QXL driver can be downloaded
|
||||
from <a class="ulink" href="http://spice-space.org/download/windows/qxl/" target="_top">this location</a> ,
|
||||
agent builds can be found
|
||||
<a class="ulink" href="http://spice-space.org/download/windows/vdagent/" target="_top">here</a>. You also need
|
||||
the vioserial driver which is distributed with the other
|
||||
<a class="ulink" href="https://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/bin/" target="_top">
|
||||
virtio-win drivers</a>.</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ar01s13.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ar01s15.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html>
|
@ -1,38 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>15. Installation</title><link rel="stylesheet" type="text/css" href="docbook-xsl.css" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="home" href="index.html" title="Spice User Manual" /><link rel="up" href="index.html" title="Spice User Manual" /><link rel="prev" href="ar01s14.html" title="14. Spice guest additions" /><link rel="next" href="ar01s16.html" title="16. Debugging" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><td width="20%" align="left"><a accesskey="p" href="ar01s14.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ar01s16.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_installation"></a>15. Installation</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_installing_spice_on_rhel_or_fedora"></a>15.1. Installing Spice on RHEL or Fedora</h3></div></div></div><p>Be aware that RHEL has no builds of qemu/spice-server for i386, only
|
||||
x86_64 builds are available. RHEL >=6 and Fedora >=13</p><pre class="programlisting">yum install qemu-kvm virt-viewer</pre><p>The package spice-protocol will be downloaded automatically as a
|
||||
dependency of package kvm.</p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_rhevm_users"></a>RHEVM Users</h4></div></div></div><p>oVirt/RHEVM users could be also interested in the spice-xpi package as
|
||||
it allows you to execute spice-client directly from the oVirt/RHEVM
|
||||
UserPortal.</p><pre class="programlisting">yum install spice-xpi</pre></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_general_build_instructions"></a>15.2. General build instructions</h3></div></div></div><p>This section is for distributions that don’t have Spice packages in
|
||||
their repositories. It will show you step by step how to build the
|
||||
required Spice components.</p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_client_requirements"></a>Client requirements</h4></div></div></div><p>See the <a class="ulink" href="https://gitlab.freedesktop.org/spice/spice-gtk/raw/master/README" target="_top">https://gitlab.freedesktop.org/spice/spice-gtk/raw/master/README</a>
|
||||
[README file in spice-gtk] for the list of dependencies.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_host_requirements"></a>Host requirements</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
|
||||
KVM supported by kernel (It should work also without KVM, but it’s
|
||||
not being tested as most Linux distrubitions already support KVM.)
|
||||
</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_guest_requirements"></a>Guest requirements</h4></div></div></div><p><strong>Linux guest. </strong>spice-vdagent requires virtio-serial support to be enabled. This is
|
||||
described in the chapter <a class="xref" href="ar01s04.html" title="4. Agent">Section 4, “Agent”</a>. Guest should have installed qxl
|
||||
driver (xorg-x11-drv-qxl on Fedora and RHEL).</p><p><strong>Windows guest. </strong>Drivers for QXL and drivers for virtio-serial require Win XP SP3.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_building"></a>Building</h4></div></div></div><p>The environment variable <code class="literal">$BUILD_ROOT</code> will point to a directory with
|
||||
stored sources and will be used during the whole build process. The
|
||||
variable <code class="literal">$INST_ROOT</code> will point to a directory in which Spice will be
|
||||
installed.</p><div class="important" style="margin-left: 0; margin-right: 10%;"><h3 class="title">Important</h3><p>These instructions may be outdated. Feel free to ask on the
|
||||
Spice mailing list if you need help building from source.</p></div><pre class="programlisting">export BUILD_ROOT=/tmp/spice; mkdir $BUILD_ROOT
|
||||
export INST_ROOT="/opt/spice"; mkdir $INST_ROOT
|
||||
export PKG_CONFIG_PATH=$INST_ROOT/lib/pkgconfig:$PKG_CONFIG_PATH
|
||||
|
||||
cd $BUILD_ROOT
|
||||
git clone https://gitlab.freedesktop.org/spice/spice.git
|
||||
cd $BUILD_ROOT/spice
|
||||
./configure --prefix=$INST_ROOT
|
||||
make
|
||||
make install
|
||||
|
||||
cd $BUILD_ROOT
|
||||
git clone git://git.qemu.org/qemu.git
|
||||
cd $BUILD_ROOT/qemu
|
||||
./configure --prefix=$INST_ROOT --target-list=x86_64-softmmu --enable-spice
|
||||
make
|
||||
make install</pre></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_setting_up_path"></a>Setting up PATH</h4></div></div></div><p>Last steps before starting with Spice are to set proper <code class="literal">PATH</code>
|
||||
variable. For example RHEL is using /usr/libexec as directory for
|
||||
qemu-kvm binaries. The following setup should be suitable for qemu and
|
||||
Spice built according to the instructions in this chapter.</p><pre class="programlisting">echo "export PATH=$PATH:$INST_ROOT/bin" >> ~/.bashrc
|
||||
source ~/.bashrc</pre><p>You should now be able to access the qemu-system-x86_64 Spice binary.</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ar01s14.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ar01s16.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html>
|
@ -1,38 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>16. Debugging</title><link rel="stylesheet" type="text/css" href="docbook-xsl.css" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="home" href="index.html" title="Spice User Manual" /><link rel="up" href="index.html" title="Spice User Manual" /><link rel="prev" href="ar01s15.html" title="15. Installation" /><link rel="next" href="apa.html" title="A. Manual authors" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><td width="20%" align="left"><a accesskey="p" href="ar01s15.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="apa.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_debugging"></a>16. Debugging</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_server_side"></a>16.1. Server side</h3></div></div></div><p>If the virtual machine was started using QEMU directly, SPICE server logs will be output to
|
||||
your console stdout.
|
||||
When using libvirt, logs are located in <code class="literal">/var/log/libvirt/qemu/</code> for the qemu
|
||||
system instance (<code class="literal">qemu:///system</code>), and in <code class="literal">~/.cache/libvirt/qemu/log</code> for the
|
||||
qemu session instance (<code class="literal">qemu:///session</code>).</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_client_side"></a>16.2. Client side</h3></div></div></div><p>remote-viewer can be started with <code class="literal">SPICE_DEBUG=1</code> in the environment, or with
|
||||
<code class="literal">--spice-debug</code> in order to get it to output more logs on stdout. <code class="literal">SPICE_DEBUG</code>
|
||||
should work with any application using spice-gtk (virt-manager, gnome-boxes, …).</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_guest_side"></a>16.3. Guest side</h3></div></div></div><p><strong>QXL KMS driver. </strong>On recent Linux kernels using the QXL kms driver, booting the kernel with the
|
||||
<code class="literal">drm.debug=0xf</code> parameter. <code class="literal">journalctl -k</code>/<code class="literal">dmesg</code> will then contain debug
|
||||
logs for the QXL kms driver. This can also be changed at runtime by echo’ing
|
||||
this value to <code class="literal">/sys/module/drm/parameters/debug</code>.</p><p><strong>qxl.guestdebug QEMU parameter. </strong>It’s also possible to get some host-side debugging logs from the guest QXL driver.
|
||||
The driver reads a guestdebug parameter from the rom, which can be set when starting
|
||||
the VM. This can be enabled with <code class="literal">-global qxl-vga.guestdebug=3</code>, or <code class="literal">-global
|
||||
qxl.guestdebug=3</code> for secondary devices.</p><p>The corresponding libvirt XML is:</p><pre class="programlisting"><domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
|
||||
....
|
||||
<qemu:commandline>
|
||||
<qemu:arg value='-global'/>
|
||||
<qemu:arg value='qxl-vga.guestdebug=3'/>
|
||||
</qemu:commandline>
|
||||
</domain></pre><p>(don’t forget to add the
|
||||
<code class="literal">xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'</code> attribute to the
|
||||
toplevel <code class="literal"><domain></code> node)</p><p>You can go up to 12 (or more, look for DEBUG_PRINT in the driver), you get really a lot of debug information. Interesting values are:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
|
||||
3 - will give you all the highlevel commands (DrvCopyBits, DrvBitBlt, etc.)
|
||||
</li><li class="listitem">
|
||||
6 - will also show QXLGetBitMap
|
||||
</li><li class="listitem">
|
||||
11 - will show caching of images (this is a driver cache, not to be confused with the cache shared between server and client).
|
||||
</li></ul></div><p><strong>qxl.cmdlog QEMU parameter. </strong>This will dump all the commands passing through the ringbuffer on the device
|
||||
side. It is driver and hence guest agnostic. This can be enabled with
|
||||
<code class="literal">-global qxl-vga.cmdlog=1</code>, or <code class="literal">-global qxl.cmdlog=1</code> for secondary devices.
|
||||
See the section above for the libvirt XML to use.</p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_agent"></a>Agent</h4></div></div></div><p>On Linux, <code class="literal">journalctl -t spice-vdagentd -t spice-vdagent</code> will display the agent log messages.
|
||||
spice-vdagent can also be restarted by hand with the <code class="literal">-d</code> argument in order to display more logs.</p><p>On Windows, the agent logs can be found in <code class="literal">C:\WINDOWS\TEMP\VDAGENT.LOG</code> and
|
||||
<code class="literal">C:\WINDOWS\TEMP\VDSERVICE.LOG</code></p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_recording_replaying_spice_server_traffic"></a>16.4. Recording/replaying SPICE server traffic</h3></div></div></div><p>Since spice-server 0.12.6, it’s possible to record display traffic sent by the
|
||||
SPICE server in order to replay it afterwards for a client without needing to
|
||||
start a VM. This is achieved by setting the environment variable
|
||||
<code class="literal">SPICE_WORKER_RECORD_FILENAME</code> to the filename to write the traffic to before starting
|
||||
QEMU.</p><p>Once the recording session is done, the <code class="literal">spice-server-replay</code> tool can be used
|
||||
to replay the previously recorded SPICE session, for example:</p><pre class="programlisting">spice-server-replay -p 5900 -c "remote-viewer spice://localhost:5900" recorded-session.spice</pre></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ar01s15.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="apa.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html>
|
@ -1,329 +0,0 @@
|
||||
/*
|
||||
CSS stylesheet for XHTML produced by DocBook XSL stylesheets.
|
||||
*/
|
||||
|
||||
body {
|
||||
font-family: Georgia,serif;
|
||||
}
|
||||
|
||||
code, pre {
|
||||
font-family: "Courier New", Courier, monospace;
|
||||
}
|
||||
|
||||
span.strong {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
body blockquote {
|
||||
margin-top: .75em;
|
||||
line-height: 1.5;
|
||||
margin-bottom: .75em;
|
||||
}
|
||||
|
||||
html body {
|
||||
margin: 1em 5% 1em 5%;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
body div {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6
|
||||
{
|
||||
color: #527bbd;
|
||||
font-family: Arial,Helvetica,sans-serif;
|
||||
}
|
||||
|
||||
div.toc p:first-child,
|
||||
div.list-of-figures p:first-child,
|
||||
div.list-of-tables p:first-child,
|
||||
div.list-of-examples p:first-child,
|
||||
div.example p.title,
|
||||
div.sidebar p.title
|
||||
{
|
||||
font-weight: bold;
|
||||
color: #527bbd;
|
||||
font-family: Arial,Helvetica,sans-serif;
|
||||
margin-bottom: 0.2em;
|
||||
}
|
||||
|
||||
body h1 {
|
||||
margin: .0em 0 0 -4%;
|
||||
line-height: 1.3;
|
||||
border-bottom: 2px solid silver;
|
||||
}
|
||||
|
||||
body h2 {
|
||||
margin: 0.5em 0 0 -4%;
|
||||
line-height: 1.3;
|
||||
border-bottom: 2px solid silver;
|
||||
}
|
||||
|
||||
body h3 {
|
||||
margin: .8em 0 0 -3%;
|
||||
line-height: 1.3;
|
||||
}
|
||||
|
||||
body h4 {
|
||||
margin: .8em 0 0 -3%;
|
||||
line-height: 1.3;
|
||||
}
|
||||
|
||||
body h5 {
|
||||
margin: .8em 0 0 -2%;
|
||||
line-height: 1.3;
|
||||
}
|
||||
|
||||
body h6 {
|
||||
margin: .8em 0 0 -1%;
|
||||
line-height: 1.3;
|
||||
}
|
||||
|
||||
body hr {
|
||||
border: none; /* Broken on IE6 */
|
||||
}
|
||||
div.footnotes hr {
|
||||
border: 1px solid silver;
|
||||
}
|
||||
|
||||
div.navheader th, div.navheader td, div.navfooter td {
|
||||
font-family: Arial,Helvetica,sans-serif;
|
||||
font-size: 0.9em;
|
||||
font-weight: bold;
|
||||
color: #527bbd;
|
||||
}
|
||||
div.navheader img, div.navfooter img {
|
||||
border-style: none;
|
||||
}
|
||||
div.navheader a, div.navfooter a {
|
||||
font-weight: normal;
|
||||
}
|
||||
div.navfooter hr {
|
||||
border: 1px solid silver;
|
||||
}
|
||||
|
||||
body td {
|
||||
line-height: 1.2
|
||||
}
|
||||
|
||||
body th {
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
ol {
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
ul, body dir, body menu {
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
html {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
body h1, body h2, body h3, body h4, body h5, body h6 {
|
||||
margin-left: 0
|
||||
}
|
||||
|
||||
body pre {
|
||||
margin: 0.5em 10% 0.5em 1em;
|
||||
line-height: 1.0;
|
||||
color: navy;
|
||||
}
|
||||
|
||||
tt.literal, code.literal {
|
||||
color: navy;
|
||||
}
|
||||
|
||||
.programlisting, .screen {
|
||||
border: 1px solid silver;
|
||||
background: #f4f4f4;
|
||||
margin: 0.5em 10% 0.5em 0;
|
||||
padding: 0.5em 1em;
|
||||
}
|
||||
|
||||
div.sidebar {
|
||||
background: #ffffee;
|
||||
margin: 1.0em 10% 0.5em 0;
|
||||
padding: 0.5em 1em;
|
||||
border: 1px solid silver;
|
||||
}
|
||||
div.sidebar * { padding: 0; }
|
||||
div.sidebar div { margin: 0; }
|
||||
div.sidebar p.title {
|
||||
margin-top: 0.5em;
|
||||
margin-bottom: 0.2em;
|
||||
}
|
||||
|
||||
div.bibliomixed {
|
||||
margin: 0.5em 5% 0.5em 1em;
|
||||
}
|
||||
|
||||
div.glossary dt {
|
||||
font-weight: bold;
|
||||
}
|
||||
div.glossary dd p {
|
||||
margin-top: 0.2em;
|
||||
}
|
||||
|
||||
dl {
|
||||
margin: .8em 0;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
dt {
|
||||
margin-top: 0.5em;
|
||||
}
|
||||
|
||||
dt span.term {
|
||||
font-style: normal;
|
||||
color: navy;
|
||||
}
|
||||
|
||||
div.variablelist dd p {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
div.itemizedlist li, div.orderedlist li {
|
||||
margin-left: -0.8em;
|
||||
margin-top: 0.5em;
|
||||
}
|
||||
|
||||
ul, ol {
|
||||
list-style-position: outside;
|
||||
}
|
||||
|
||||
div.sidebar ul, div.sidebar ol {
|
||||
margin-left: 2.8em;
|
||||
}
|
||||
|
||||
div.itemizedlist p.title,
|
||||
div.orderedlist p.title,
|
||||
div.variablelist p.title
|
||||
{
|
||||
margin-bottom: -0.8em;
|
||||
}
|
||||
|
||||
div.revhistory table {
|
||||
border-collapse: collapse;
|
||||
border: none;
|
||||
}
|
||||
div.revhistory th {
|
||||
border: none;
|
||||
color: #527bbd;
|
||||
font-family: Arial,Helvetica,sans-serif;
|
||||
}
|
||||
div.revhistory td {
|
||||
border: 1px solid silver;
|
||||
}
|
||||
|
||||
/* Keep TOC and index lines close together. */
|
||||
div.toc dl, div.toc dt,
|
||||
div.list-of-figures dl, div.list-of-figures dt,
|
||||
div.list-of-tables dl, div.list-of-tables dt,
|
||||
div.indexdiv dl, div.indexdiv dt
|
||||
{
|
||||
line-height: normal;
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
/*
|
||||
Table styling does not work because of overriding attributes in
|
||||
generated HTML.
|
||||
*/
|
||||
div.table table,
|
||||
div.informaltable table
|
||||
{
|
||||
margin-left: 0;
|
||||
margin-right: 5%;
|
||||
margin-bottom: 0.8em;
|
||||
}
|
||||
div.informaltable table
|
||||
{
|
||||
margin-top: 0.4em
|
||||
}
|
||||
div.table thead,
|
||||
div.table tfoot,
|
||||
div.table tbody,
|
||||
div.informaltable thead,
|
||||
div.informaltable tfoot,
|
||||
div.informaltable tbody
|
||||
{
|
||||
/* No effect in IE6. */
|
||||
border-top: 3px solid #527bbd;
|
||||
border-bottom: 3px solid #527bbd;
|
||||
}
|
||||
div.table thead, div.table tfoot,
|
||||
div.informaltable thead, div.informaltable tfoot
|
||||
{
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
div.mediaobject img {
|
||||
margin-bottom: 0.8em;
|
||||
}
|
||||
div.figure p.title,
|
||||
div.table p.title
|
||||
{
|
||||
margin-top: 1em;
|
||||
margin-bottom: 0.4em;
|
||||
}
|
||||
|
||||
div.calloutlist p
|
||||
{
|
||||
margin-top: 0em;
|
||||
margin-bottom: 0.4em;
|
||||
}
|
||||
|
||||
a img {
|
||||
border-style: none;
|
||||
}
|
||||
|
||||
@media print {
|
||||
div.navheader, div.navfooter { display: none; }
|
||||
}
|
||||
|
||||
span.aqua { color: aqua; }
|
||||
span.black { color: black; }
|
||||
span.blue { color: blue; }
|
||||
span.fuchsia { color: fuchsia; }
|
||||
span.gray { color: gray; }
|
||||
span.green { color: green; }
|
||||
span.lime { color: lime; }
|
||||
span.maroon { color: maroon; }
|
||||
span.navy { color: navy; }
|
||||
span.olive { color: olive; }
|
||||
span.purple { color: purple; }
|
||||
span.red { color: red; }
|
||||
span.silver { color: silver; }
|
||||
span.teal { color: teal; }
|
||||
span.white { color: white; }
|
||||
span.yellow { color: yellow; }
|
||||
|
||||
span.aqua-background { background: aqua; }
|
||||
span.black-background { background: black; }
|
||||
span.blue-background { background: blue; }
|
||||
span.fuchsia-background { background: fuchsia; }
|
||||
span.gray-background { background: gray; }
|
||||
span.green-background { background: green; }
|
||||
span.lime-background { background: lime; }
|
||||
span.maroon-background { background: maroon; }
|
||||
span.navy-background { background: navy; }
|
||||
span.olive-background { background: olive; }
|
||||
span.purple-background { background: purple; }
|
||||
span.red-background { background: red; }
|
||||
span.silver-background { background: silver; }
|
||||
span.teal-background { background: teal; }
|
||||
span.white-background { background: white; }
|
||||
span.yellow-background { background: yellow; }
|
||||
|
||||
span.big { font-size: 2em; }
|
||||
span.small { font-size: 0.6em; }
|
||||
|
||||
span.underline { text-decoration: underline; }
|
||||
span.overline { text-decoration: overline; }
|
||||
span.line-through { text-decoration: line-through; }
|
@ -1,14 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Glossary</title><link rel="stylesheet" type="text/css" href="docbook-xsl.css" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="home" href="index.html" title="Spice User Manual" /><link rel="up" href="index.html" title="Spice User Manual" /><link rel="prev" href="apa.html" title="A. Manual authors" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><td width="20%" align="left"><a accesskey="p" href="apa.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> </td></tr></table><hr /></div><div class="glossary"><div class="titlepage"><div><div><h2 class="title"><a id="glossary"></a>Glossary</h2></div></div></div><dl><dt><span class="glossterm">
|
||||
Host
|
||||
</span></dt><dd class="glossdef"><p>
|
||||
Host is a machine running an instance of qemu-kvm.
|
||||
</p></dd><dt><span class="glossterm">
|
||||
Guest
|
||||
</span></dt><dd class="glossdef"><p>
|
||||
Guest is a virtual machine hosted on the host which will be accessed with a Spice client.
|
||||
</p></dd><dt><span class="glossterm">
|
||||
Client
|
||||
</span></dt><dd class="glossdef"><p>
|
||||
Client is referring to a system running the Spice client (the recommended one is virt-viewer).
|
||||
</p></dd></dl></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="apa.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> </td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html>
|
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,458 +0,0 @@
|
||||
Spice project coding style and coding conventions
|
||||
=================================================
|
||||
|
||||
Copyright (C) 2009-2018 Red Hat, Inc.
|
||||
Licensed under a Creative Commons Attribution-Share Alike 3.0
|
||||
United States License (see http://creativecommons.org/licenses/by-sa/3.0/us/legalcode).
|
||||
|
||||
|
||||
Source Files
|
||||
------------
|
||||
|
||||
Names
|
||||
~~~~~
|
||||
|
||||
Use lower case and separate words using dashes (e.g., file-name.c, header.h).
|
||||
|
||||
Use standard file extension for C source and header files.
|
||||
|
||||
Line width
|
||||
~~~~~~~~~~
|
||||
|
||||
No more than 100 characters on a single line
|
||||
|
||||
Tabs
|
||||
~~~~
|
||||
|
||||
Tabs are not allowed, use 4 spaces instead
|
||||
|
||||
White spaces
|
||||
~~~~~~~~~~~~
|
||||
|
||||
Trailing white spaces are not allowed
|
||||
|
||||
New Line
|
||||
~~~~~~~~
|
||||
|
||||
Use Unix style line ending (i.e., LF)
|
||||
|
||||
New line (i.e., EOL) must be the last char in the file
|
||||
|
||||
Comparing
|
||||
---------
|
||||
|
||||
Use right-hand comparison style.
|
||||
|
||||
Examples: +
|
||||
use `(var == 7)` instead of `(7 == var)` +
|
||||
use `(function(var) > 7)` instead of `(7 < function(var))`
|
||||
|
||||
boolean type
|
||||
------------
|
||||
Where possible prefer the usage of `bool` type to store boolean.
|
||||
|
||||
If not technically possible (ie libJPEG uses `boolean` while GLib uses `gboolean`) uses proper library type.
|
||||
|
||||
Constants should be consistent with the type used so `true` and `false` for `bool` type.
|
||||
|
||||
true, false and NULL
|
||||
--------------------
|
||||
|
||||
Use `true`, `false` and `NULL` instead of 1 and 0 in order to improve code readability.
|
||||
|
||||
Static storage initialization
|
||||
-----------------------------
|
||||
|
||||
To improve code readability, explicitly initialize variables that depend on default initialization with zero/null.
|
||||
|
||||
FIXME and TODO
|
||||
--------------
|
||||
|
||||
Comments that are prefixed with `FIXME` describe a bug that need to be fixed. Generally, it is not allowed to commit new code having `FIXME` comment. Committing `FIXME` is allowed only for existing bugs. Comments that are prefixed with `TODO` describe further features, optimization or code improvements, and they are allowed to be committed along with the relevant code.
|
||||
|
||||
ASSERT
|
||||
------
|
||||
|
||||
Use it freely. ASSERT helps testing function arguments and function results validity. ASSERT helps detecting bugs and improve code readability and stability.
|
||||
|
||||
sizeof
|
||||
------
|
||||
|
||||
Apply function style to `sizeof` (i.e., use `sizeof(x)`)
|
||||
|
||||
const
|
||||
-----
|
||||
|
||||
Use const keyword when applicable to improve code reliability and celerity.
|
||||
|
||||
goto
|
||||
----
|
||||
|
||||
Using goto is allowed in C code for error handling. In any other case it will be used only as a special exception.
|
||||
|
||||
switch
|
||||
------
|
||||
|
||||
If a switch case falls through (i.e. does not end with a `break`), annotate it with a `/* fall through */` comment. Some compilers will emit a warning otherwise.
|
||||
|
||||
Defining Constant values
|
||||
------------------------
|
||||
|
||||
Use defines for constant values for improving readability and ease of changes. Alternatively, use global `const` variables.
|
||||
|
||||
Short functions
|
||||
---------------
|
||||
|
||||
Try to split code to short functions, each having simple functionality, in order to improve code readability and re-usability. Prefix with inline short functions or functions that were splitted for readability reason.
|
||||
|
||||
Return on if
|
||||
------------
|
||||
|
||||
Try to return immediately on if in places that can reduce indentation level.
|
||||
|
||||
Example:
|
||||
|
||||
prefer
|
||||
[source,c]
|
||||
----
|
||||
void function(int *n)
|
||||
{
|
||||
if (!n) {
|
||||
return;
|
||||
}
|
||||
...
|
||||
}
|
||||
----
|
||||
over
|
||||
|
||||
[source,c]
|
||||
----
|
||||
void function(int *n)
|
||||
{
|
||||
if (!n) {
|
||||
return;
|
||||
} else {
|
||||
...
|
||||
}
|
||||
}
|
||||
----
|
||||
|
||||
Names
|
||||
-----
|
||||
|
||||
* Don't underestimate the importance of name choosing. Good names make the code more easy to understand and reduce the required level of code documentation. When choosing names, prefer long meaningful names over short vague name.
|
||||
* Variable and Function names - use lower case and separate words using underscore (e.g., sample_variable_name)
|
||||
* Structures, class and enum names - one or more words, each word start with upper case (e.g., Name, SampleStructName)
|
||||
* Defines and enum items names - uppercase words separated using underscores (e.g., NAME, SAMPLE_DEFINE_NAME)
|
||||
|
||||
Type prefix
|
||||
~~~~~~~~~~~
|
||||
In the code there are some common prefixes for types, `Red` and `Spice`.
|
||||
As a basic rule `Spice` refers to types in the public external headers while `Red` is used for internal types.
|
||||
|
||||
Common abbreviations
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
`ccc` CursorChannelClient
|
||||
|
||||
`dc` DisplayChannel
|
||||
|
||||
`dcc` DisplayChannelClient
|
||||
|
||||
`dpi` drawable pipe item
|
||||
|
||||
`rcc` RedChannelClient
|
||||
|
||||
`sif` spice interface
|
||||
|
||||
`sin` spice instance
|
||||
|
||||
Optimization
|
||||
------------
|
||||
|
||||
Keep optimization to fast path code. Prefer safe, clear and easy to maintain coding for code that is not on the fast path.
|
||||
|
||||
Spacing
|
||||
-------
|
||||
|
||||
Use spacing for improving code readability.
|
||||
|
||||
[source,c]
|
||||
for (i = 0; i < 10; ++i) {
|
||||
some_func(var, i * i + *ptr, &var, sizeof(var));
|
||||
}
|
||||
|
||||
Indentation
|
||||
-----------
|
||||
|
||||
[[function_indentation]]
|
||||
Function Indentation
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
* No spaces between function name to left bracket.
|
||||
* Curly bracket start on new line.
|
||||
* Functions must be padded with empty lines on both sides
|
||||
+
|
||||
[source,c]
|
||||
void function(type1 arg1, type2 arg2, type2 arg3)
|
||||
{
|
||||
...
|
||||
}
|
||||
+
|
||||
* In case of a new line in arguments list, align it to the first argument type.
|
||||
+
|
||||
[source,c]
|
||||
----
|
||||
void function(type1 arg1,
|
||||
type2 arg2,
|
||||
type3 arg3)
|
||||
----
|
||||
+
|
||||
Or
|
||||
+
|
||||
[source,c]
|
||||
----
|
||||
void function(type1 arg1, type2 arg2,
|
||||
type3 arg3)
|
||||
----
|
||||
+
|
||||
* New line is acceptable in arguments list and before function name, like
|
||||
+
|
||||
[source,c]
|
||||
----
|
||||
void
|
||||
function(type1 arg1, type2 arg2,
|
||||
type3 arg3)
|
||||
----
|
||||
|
||||
Branching indentation
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
* Add space after a branch keyword and after the right bracket.
|
||||
* Curly bracket starts on the same line the branch starts.
|
||||
* Place curly brackets after all control flow constructs even where optional. This convention reduces branching bugs that are difficult to detect. It also makes it easier to add logging messages during debugging since it eliminates the need to add the brackets.
|
||||
+
|
||||
[source,c]
|
||||
----
|
||||
if (condition) {
|
||||
...
|
||||
} else if (condition) {
|
||||
...
|
||||
} else {
|
||||
...
|
||||
}
|
||||
----
|
||||
+
|
||||
In case of long condition statement, prefer having additional temporary variable over multiple line condition statement.
|
||||
+
|
||||
In case of new line in condition statement.
|
||||
+
|
||||
[source,c]
|
||||
----
|
||||
if (long_name && very_long_name && very_long ||
|
||||
var_name) {
|
||||
----
|
||||
+
|
||||
or indent under the round bracket using spaces
|
||||
+
|
||||
[source,c]
|
||||
----
|
||||
if (long_name && very_long_name && long_name ||
|
||||
var_name) {
|
||||
----
|
||||
+
|
||||
Break function arguments list in long condition statement according to <<function_indentation, Function Indentation>> section.
|
||||
+
|
||||
[source,c]
|
||||
----
|
||||
while (condition) {
|
||||
...
|
||||
}
|
||||
|
||||
do {
|
||||
...
|
||||
} while (condition);
|
||||
|
||||
for (i = x; i < y; i++) {
|
||||
...
|
||||
}
|
||||
|
||||
|
||||
switch (x) {
|
||||
case A: {
|
||||
...
|
||||
break;
|
||||
}
|
||||
case B:
|
||||
...
|
||||
...
|
||||
break;
|
||||
default:
|
||||
...
|
||||
}
|
||||
----
|
||||
|
||||
Types indentation
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
[source,c]
|
||||
----
|
||||
struct StructName {
|
||||
type1 name1;
|
||||
type2 name2;
|
||||
|
||||
...
|
||||
};
|
||||
|
||||
enum {
|
||||
A,
|
||||
B,
|
||||
C = 10,
|
||||
D,
|
||||
};
|
||||
|
||||
union {
|
||||
type1 name1;
|
||||
type2 name2;
|
||||
...
|
||||
} u;
|
||||
----
|
||||
|
||||
Vertical indentation
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Use one space no tabs and no vertical alignment.
|
||||
[source,c]
|
||||
----
|
||||
long var_name_1 = 7;
|
||||
int var_name_2 = 1111l;
|
||||
unsigned long long_var_name_1 = 666;
|
||||
char long_var_name_1 = 'a';
|
||||
|
||||
void f1(int a, char ch);
|
||||
unsigned long f2(int a, char ch);
|
||||
----
|
||||
|
||||
Multi line macro indentation
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
[source,c]
|
||||
#define MACRO_NAME(a, b, c) { \
|
||||
int ab = a + c; \
|
||||
int ac = a + b; \
|
||||
int bc = b + c; \
|
||||
f(ab, ac, bc); \
|
||||
}
|
||||
|
||||
Multi line array indentation
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
[source,c]
|
||||
char *array[] = {
|
||||
"item_1",
|
||||
"item_2",
|
||||
"item_3",
|
||||
};
|
||||
|
||||
Headers
|
||||
-------
|
||||
|
||||
Headers should be protected against multiple inclusion using a macro that contains the header file name in uppercase, with all characters that are invalid in C replaced with an underscore '_':
|
||||
|
||||
[source,c]
|
||||
----
|
||||
#ifndef MY_MODULE_H
|
||||
#define MY_MODULE_H
|
||||
|
||||
...
|
||||
|
||||
#endif // MY_MODULE_H
|
||||
----
|
||||
|
||||
The macro may include additional information, e.g. a component. For example a file generally referenced as foo/bar.h could use a FOO_BAR_H macro.
|
||||
|
||||
Historically, some headers added underscores liberally, e.g. MY_MODULE_H_. This is neither necessary nor discouraged, although as a reminder, a leading underscore followed by a capital letter is reserved for the implementation and should not be used, so _MY_MODULE_H is, technically speaking, invalid C.
|
||||
|
||||
Header inclusion
|
||||
----------------
|
||||
|
||||
Headers should be included in this order
|
||||
|
||||
[source,c]
|
||||
----
|
||||
#include <system_headers.h>
|
||||
#include <no_spice_no_system_libraries.h>
|
||||
#include <spice_protocol.h>
|
||||
#include <spice_common.h>
|
||||
|
||||
#include "spice_server.h"
|
||||
----
|
||||
|
||||
(note the empty line between no spice-server and spice-server headers)
|
||||
|
||||
Also in source (no header) files you must include `config.h` at the beginning so should start (beside comments and copyright) with
|
||||
|
||||
[source,c]
|
||||
----
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#include <system_headers.h>
|
||||
#include <no_spice_no_system_libraries.h>
|
||||
#include <spice_protocol.h>
|
||||
#include <spice_common.h>
|
||||
|
||||
#include "spice_server.h"
|
||||
----
|
||||
|
||||
C++
|
||||
---
|
||||
C\++ style follows C style if not specified otherwise.
|
||||
The C+\+11 dialect is assumed by default. No attempts will be made to
|
||||
restrict the code to older variants of C+\+.
|
||||
For compatibility reasons don't use more recent C++ dialects.
|
||||
|
||||
Method names
|
||||
~~~~~~~~~~~~
|
||||
|
||||
Method names should use lower case and separate words with
|
||||
underscores.
|
||||
|
||||
|
||||
Namespaces
|
||||
~~~~~~~~~~
|
||||
|
||||
Namespaces should use lower case and separate words with underscores.
|
||||
Namespace blocks should not increase indentation.
|
||||
Namespaces can be nested. Namespace closing brackets for nested
|
||||
namespaces can be placed together on the same line, but for
|
||||
readability reasons the closure should specify the namespace with a
|
||||
comment.
|
||||
|
||||
[source,cpp]
|
||||
----
|
||||
namespace spice {
|
||||
namespace streaming_agent {
|
||||
|
||||
class ClassInsideNamespace {
|
||||
...
|
||||
};
|
||||
|
||||
}} // namespace spice::streaming_agent
|
||||
----
|
||||
|
||||
The `using namespace` construct should never be used in headers. It should
|
||||
be used sparingly in source files, and only within the body of short
|
||||
functions.
|
||||
|
||||
Preferred alternatives to `using namespace` include:
|
||||
|
||||
* using declarations
|
||||
+
|
||||
[source,cpp]
|
||||
using spice::streaming_agent::some_class;
|
||||
+
|
||||
* namespace aliases
|
||||
+
|
||||
[source,cpp]
|
||||
namespace ssa = spice::streaming_agent;
|
@ -1,811 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
|
||||
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
|
||||
<meta name="generator" content="AsciiDoc 8.6.8" />
|
||||
<title></title>
|
||||
<style type="text/css">
|
||||
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */
|
||||
|
||||
/* Default font. */
|
||||
body {
|
||||
font-family: Georgia,serif;
|
||||
}
|
||||
|
||||
/* Title font. */
|
||||
h1, h2, h3, h4, h5, h6,
|
||||
div.title, caption.title,
|
||||
thead, p.table.header,
|
||||
#toctitle,
|
||||
#author, #revnumber, #revdate, #revremark,
|
||||
#footer {
|
||||
font-family: Arial,Helvetica,sans-serif;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 1em 5% 1em 5%;
|
||||
}
|
||||
|
||||
a {
|
||||
color: blue;
|
||||
text-decoration: underline;
|
||||
}
|
||||
a:visited {
|
||||
color: fuchsia;
|
||||
}
|
||||
|
||||
em {
|
||||
font-style: italic;
|
||||
color: navy;
|
||||
}
|
||||
|
||||
strong {
|
||||
font-weight: bold;
|
||||
color: #083194;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
color: #527bbd;
|
||||
margin-top: 1.2em;
|
||||
margin-bottom: 0.5em;
|
||||
line-height: 1.3;
|
||||
}
|
||||
|
||||
h1, h2, h3 {
|
||||
border-bottom: 2px solid silver;
|
||||
}
|
||||
h2 {
|
||||
padding-top: 0.5em;
|
||||
}
|
||||
h3 {
|
||||
float: left;
|
||||
}
|
||||
h3 + * {
|
||||
clear: left;
|
||||
}
|
||||
h5 {
|
||||
font-size: 1.0em;
|
||||
}
|
||||
|
||||
div.sectionbody {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
hr {
|
||||
border: 1px solid silver;
|
||||
}
|
||||
|
||||
p {
|
||||
margin-top: 0.5em;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
ul, ol, li > p {
|
||||
margin-top: 0;
|
||||
}
|
||||
ul > li { color: #aaa; }
|
||||
ul > li > * { color: black; }
|
||||
|
||||
.monospaced, code, pre {
|
||||
font-family: "Courier New", Courier, monospace;
|
||||
font-size: inherit;
|
||||
color: navy;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
|
||||
#author {
|
||||
color: #527bbd;
|
||||
font-weight: bold;
|
||||
font-size: 1.1em;
|
||||
}
|
||||
#email {
|
||||
}
|
||||
#revnumber, #revdate, #revremark {
|
||||
}
|
||||
|
||||
#footer {
|
||||
font-size: small;
|
||||
border-top: 2px solid silver;
|
||||
padding-top: 0.5em;
|
||||
margin-top: 4.0em;
|
||||
}
|
||||
#footer-text {
|
||||
float: left;
|
||||
padding-bottom: 0.5em;
|
||||
}
|
||||
#footer-badges {
|
||||
float: right;
|
||||
padding-bottom: 0.5em;
|
||||
}
|
||||
|
||||
#preamble {
|
||||
margin-top: 1.5em;
|
||||
margin-bottom: 1.5em;
|
||||
}
|
||||
div.imageblock, div.exampleblock, div.verseblock,
|
||||
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
|
||||
div.admonitionblock {
|
||||
margin-top: 1.0em;
|
||||
margin-bottom: 1.5em;
|
||||
}
|
||||
div.admonitionblock {
|
||||
margin-top: 2.0em;
|
||||
margin-bottom: 2.0em;
|
||||
margin-right: 10%;
|
||||
color: #606060;
|
||||
}
|
||||
|
||||
div.content { /* Block element content. */
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
/* Block element titles. */
|
||||
div.title, caption.title {
|
||||
color: #527bbd;
|
||||
font-weight: bold;
|
||||
text-align: left;
|
||||
margin-top: 1.0em;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
div.title + * {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
td div.title:first-child {
|
||||
margin-top: 0.0em;
|
||||
}
|
||||
div.content div.title:first-child {
|
||||
margin-top: 0.0em;
|
||||
}
|
||||
div.content + div.title {
|
||||
margin-top: 0.0em;
|
||||
}
|
||||
|
||||
div.sidebarblock > div.content {
|
||||
background: #ffffee;
|
||||
border: 1px solid #dddddd;
|
||||
border-left: 4px solid #f0f0f0;
|
||||
padding: 0.5em;
|
||||
}
|
||||
|
||||
div.listingblock > div.content {
|
||||
border: 1px solid #dddddd;
|
||||
border-left: 5px solid #f0f0f0;
|
||||
background: #f8f8f8;
|
||||
padding: 0.5em;
|
||||
}
|
||||
|
||||
div.quoteblock, div.verseblock {
|
||||
padding-left: 1.0em;
|
||||
margin-left: 1.0em;
|
||||
margin-right: 10%;
|
||||
border-left: 5px solid #f0f0f0;
|
||||
color: #888;
|
||||
}
|
||||
|
||||
div.quoteblock > div.attribution {
|
||||
padding-top: 0.5em;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
div.verseblock > pre.content {
|
||||
font-family: inherit;
|
||||
font-size: inherit;
|
||||
}
|
||||
div.verseblock > div.attribution {
|
||||
padding-top: 0.75em;
|
||||
text-align: left;
|
||||
}
|
||||
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
|
||||
div.verseblock + div.attribution {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
div.admonitionblock .icon {
|
||||
vertical-align: top;
|
||||
font-size: 1.1em;
|
||||
font-weight: bold;
|
||||
text-decoration: underline;
|
||||
color: #527bbd;
|
||||
padding-right: 0.5em;
|
||||
}
|
||||
div.admonitionblock td.content {
|
||||
padding-left: 0.5em;
|
||||
border-left: 3px solid #dddddd;
|
||||
}
|
||||
|
||||
div.exampleblock > div.content {
|
||||
border-left: 3px solid #dddddd;
|
||||
padding-left: 0.5em;
|
||||
}
|
||||
|
||||
div.imageblock div.content { padding-left: 0; }
|
||||
span.image img { border-style: none; }
|
||||
a.image:visited { color: white; }
|
||||
|
||||
dl {
|
||||
margin-top: 0.8em;
|
||||
margin-bottom: 0.8em;
|
||||
}
|
||||
dt {
|
||||
margin-top: 0.5em;
|
||||
margin-bottom: 0;
|
||||
font-style: normal;
|
||||
color: navy;
|
||||
}
|
||||
dd > *:first-child {
|
||||
margin-top: 0.1em;
|
||||
}
|
||||
|
||||
ul, ol {
|
||||
list-style-position: outside;
|
||||
}
|
||||
ol.arabic {
|
||||
list-style-type: decimal;
|
||||
}
|
||||
ol.loweralpha {
|
||||
list-style-type: lower-alpha;
|
||||
}
|
||||
ol.upperalpha {
|
||||
list-style-type: upper-alpha;
|
||||
}
|
||||
ol.lowerroman {
|
||||
list-style-type: lower-roman;
|
||||
}
|
||||
ol.upperroman {
|
||||
list-style-type: upper-roman;
|
||||
}
|
||||
|
||||
div.compact ul, div.compact ol,
|
||||
div.compact p, div.compact p,
|
||||
div.compact div, div.compact div {
|
||||
margin-top: 0.1em;
|
||||
margin-bottom: 0.1em;
|
||||
}
|
||||
|
||||
tfoot {
|
||||
font-weight: bold;
|
||||
}
|
||||
td > div.verse {
|
||||
white-space: pre;
|
||||
}
|
||||
|
||||
div.hdlist {
|
||||
margin-top: 0.8em;
|
||||
margin-bottom: 0.8em;
|
||||
}
|
||||
div.hdlist tr {
|
||||
padding-bottom: 15px;
|
||||
}
|
||||
dt.hdlist1.strong, td.hdlist1.strong {
|
||||
font-weight: bold;
|
||||
}
|
||||
td.hdlist1 {
|
||||
vertical-align: top;
|
||||
font-style: normal;
|
||||
padding-right: 0.8em;
|
||||
color: navy;
|
||||
}
|
||||
td.hdlist2 {
|
||||
vertical-align: top;
|
||||
}
|
||||
div.hdlist.compact tr {
|
||||
margin: 0;
|
||||
padding-bottom: 0;
|
||||
}
|
||||
|
||||
.comment {
|
||||
background: yellow;
|
||||
}
|
||||
|
||||
.footnote, .footnoteref {
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
span.footnote, span.footnoteref {
|
||||
vertical-align: super;
|
||||
}
|
||||
|
||||
#footnotes {
|
||||
margin: 20px 0 20px 0;
|
||||
padding: 7px 0 0 0;
|
||||
}
|
||||
|
||||
#footnotes div.footnote {
|
||||
margin: 0 0 5px 0;
|
||||
}
|
||||
|
||||
#footnotes hr {
|
||||
border: none;
|
||||
border-top: 1px solid silver;
|
||||
height: 1px;
|
||||
text-align: left;
|
||||
margin-left: 0;
|
||||
width: 20%;
|
||||
min-width: 100px;
|
||||
}
|
||||
|
||||
div.colist td {
|
||||
padding-right: 0.5em;
|
||||
padding-bottom: 0.3em;
|
||||
vertical-align: top;
|
||||
}
|
||||
div.colist td img {
|
||||
margin-top: 0.3em;
|
||||
}
|
||||
|
||||
@media print {
|
||||
#footer-badges { display: none; }
|
||||
}
|
||||
|
||||
#toc {
|
||||
margin-bottom: 2.5em;
|
||||
}
|
||||
|
||||
#toctitle {
|
||||
color: #527bbd;
|
||||
font-size: 1.1em;
|
||||
font-weight: bold;
|
||||
margin-top: 1.0em;
|
||||
margin-bottom: 0.1em;
|
||||
}
|
||||
|
||||
div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
div.toclevel2 {
|
||||
margin-left: 2em;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
div.toclevel3 {
|
||||
margin-left: 4em;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
div.toclevel4 {
|
||||
margin-left: 6em;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
span.aqua { color: aqua; }
|
||||
span.black { color: black; }
|
||||
span.blue { color: blue; }
|
||||
span.fuchsia { color: fuchsia; }
|
||||
span.gray { color: gray; }
|
||||
span.green { color: green; }
|
||||
span.lime { color: lime; }
|
||||
span.maroon { color: maroon; }
|
||||
span.navy { color: navy; }
|
||||
span.olive { color: olive; }
|
||||
span.purple { color: purple; }
|
||||
span.red { color: red; }
|
||||
span.silver { color: silver; }
|
||||
span.teal { color: teal; }
|
||||
span.white { color: white; }
|
||||
span.yellow { color: yellow; }
|
||||
|
||||
span.aqua-background { background: aqua; }
|
||||
span.black-background { background: black; }
|
||||
span.blue-background { background: blue; }
|
||||
span.fuchsia-background { background: fuchsia; }
|
||||
span.gray-background { background: gray; }
|
||||
span.green-background { background: green; }
|
||||
span.lime-background { background: lime; }
|
||||
span.maroon-background { background: maroon; }
|
||||
span.navy-background { background: navy; }
|
||||
span.olive-background { background: olive; }
|
||||
span.purple-background { background: purple; }
|
||||
span.red-background { background: red; }
|
||||
span.silver-background { background: silver; }
|
||||
span.teal-background { background: teal; }
|
||||
span.white-background { background: white; }
|
||||
span.yellow-background { background: yellow; }
|
||||
|
||||
span.big { font-size: 2em; }
|
||||
span.small { font-size: 0.6em; }
|
||||
|
||||
span.underline { text-decoration: underline; }
|
||||
span.overline { text-decoration: overline; }
|
||||
span.line-through { text-decoration: line-through; }
|
||||
|
||||
div.unbreakable { page-break-inside: avoid; }
|
||||
|
||||
|
||||
/*
|
||||
* xhtml11 specific
|
||||
*
|
||||
* */
|
||||
|
||||
div.tableblock {
|
||||
margin-top: 1.0em;
|
||||
margin-bottom: 1.5em;
|
||||
}
|
||||
div.tableblock > table {
|
||||
border: 3px solid #527bbd;
|
||||
}
|
||||
thead, p.table.header {
|
||||
font-weight: bold;
|
||||
color: #527bbd;
|
||||
}
|
||||
p.table {
|
||||
margin-top: 0;
|
||||
}
|
||||
/* Because the table frame attribute is overriden by CSS in most browsers. */
|
||||
div.tableblock > table[frame="void"] {
|
||||
border-style: none;
|
||||
}
|
||||
div.tableblock > table[frame="hsides"] {
|
||||
border-left-style: none;
|
||||
border-right-style: none;
|
||||
}
|
||||
div.tableblock > table[frame="vsides"] {
|
||||
border-top-style: none;
|
||||
border-bottom-style: none;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* html5 specific
|
||||
*
|
||||
* */
|
||||
|
||||
table.tableblock {
|
||||
margin-top: 1.0em;
|
||||
margin-bottom: 1.5em;
|
||||
}
|
||||
thead, p.tableblock.header {
|
||||
font-weight: bold;
|
||||
color: #527bbd;
|
||||
}
|
||||
p.tableblock {
|
||||
margin-top: 0;
|
||||
}
|
||||
table.tableblock {
|
||||
border-width: 3px;
|
||||
border-spacing: 0px;
|
||||
border-style: solid;
|
||||
border-color: #527bbd;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
th.tableblock, td.tableblock {
|
||||
border-width: 1px;
|
||||
padding: 4px;
|
||||
border-style: solid;
|
||||
border-color: #527bbd;
|
||||
}
|
||||
|
||||
table.tableblock.frame-topbot {
|
||||
border-left-style: hidden;
|
||||
border-right-style: hidden;
|
||||
}
|
||||
table.tableblock.frame-sides {
|
||||
border-top-style: hidden;
|
||||
border-bottom-style: hidden;
|
||||
}
|
||||
table.tableblock.frame-none {
|
||||
border-style: hidden;
|
||||
}
|
||||
|
||||
th.tableblock.halign-left, td.tableblock.halign-left {
|
||||
text-align: left;
|
||||
}
|
||||
th.tableblock.halign-center, td.tableblock.halign-center {
|
||||
text-align: center;
|
||||
}
|
||||
th.tableblock.halign-right, td.tableblock.halign-right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
th.tableblock.valign-top, td.tableblock.valign-top {
|
||||
vertical-align: top;
|
||||
}
|
||||
th.tableblock.valign-middle, td.tableblock.valign-middle {
|
||||
vertical-align: middle;
|
||||
}
|
||||
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
|
||||
vertical-align: bottom;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* manpage specific
|
||||
*
|
||||
* */
|
||||
|
||||
body.manpage h1 {
|
||||
padding-top: 0.5em;
|
||||
padding-bottom: 0.5em;
|
||||
border-top: 2px solid silver;
|
||||
border-bottom: 2px solid silver;
|
||||
}
|
||||
body.manpage h2 {
|
||||
border-style: none;
|
||||
}
|
||||
body.manpage div.sectionbody {
|
||||
margin-left: 3em;
|
||||
}
|
||||
|
||||
@media print {
|
||||
body.manpage div#toc { display: none; }
|
||||
}
|
||||
|
||||
|
||||
</style>
|
||||
<script type="text/javascript">
|
||||
/*<+'])');
|
||||
// Function that scans the DOM tree for header elements (the DOM2
|
||||
// nodeIterator API would be a better technique but not supported by all
|
||||
// browsers).
|
||||
var iterate = function (el) {
|
||||
for (var i = el.firstChild; i != null; i = i.nextSibling) {
|
||||
if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
|
||||
var mo = re.exec(i.tagName);
|
||||
if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
|
||||
result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
|
||||
}
|
||||
iterate(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
iterate(el);
|
||||
return result;
|
||||
}
|
||||
|
||||
var toc = document.getElementById("toc");
|
||||
if (!toc) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Delete existing TOC entries in case we're reloading the TOC.
|
||||
var tocEntriesToRemove = [];
|
||||
var i;
|
||||
for (i = 0; i < toc.childNodes.length; i++) {
|
||||
var entry = toc.childNodes[i];
|
||||
if (entry.nodeName.toLowerCase() == 'div'
|
||||
&& entry.getAttribute("class")
|
||||
&& entry.getAttribute("class").match(/^toclevel/))
|
||||
tocEntriesToRemove.push(entry);
|
||||
}
|
||||
for (i = 0; i < tocEntriesToRemove.length; i++) {
|
||||
toc.removeChild(tocEntriesToRemove[i]);
|
||||
}
|
||||
|
||||
// Rebuild TOC entries.
|
||||
var entries = tocEntries(document.getElementById("content"), toclevels);
|
||||
for (var i = 0; i < entries.length; ++i) {
|
||||
var entry = entries[i];
|
||||
if (entry.element.id == "")
|
||||
entry.element.id = "_toc_" + i;
|
||||
var a = document.createElement("a");
|
||||
a.href = "#" + entry.element.id;
|
||||
a.appendChild(document.createTextNode(entry.text));
|
||||
var div = document.createElement("div");
|
||||
div.appendChild(a);
|
||||
div.className = "toclevel" + entry.toclevel;
|
||||
toc.appendChild(div);
|
||||
}
|
||||
if (entries.length == 0)
|
||||
toc.parentNode.removeChild(toc);
|
||||
},
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
// Footnotes generator
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
|
||||
/* Based on footnote generation code from:
|
||||
* http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
|
||||
*/
|
||||
|
||||
footnotes: function () {
|
||||
// Delete existing footnote entries in case we're reloading the footnodes.
|
||||
var i;
|
||||
var noteholder = document.getElementById("footnotes");
|
||||
if (!noteholder) {
|
||||
return;
|
||||
}
|
||||
var entriesToRemove = [];
|
||||
for (i = 0; i < noteholder.childNodes.length; i++) {
|
||||
var entry = noteholder.childNodes[i];
|
||||
if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
|
||||
entriesToRemove.push(entry);
|
||||
}
|
||||
for (i = 0; i < entriesToRemove.length; i++) {
|
||||
noteholder.removeChild(entriesToRemove[i]);
|
||||
}
|
||||
|
||||
// Rebuild footnote entries.
|
||||
var cont = document.getElementById("content");
|
||||
var spans = cont.getElementsByTagName("span");
|
||||
var refs = {};
|
||||
var n = 0;
|
||||
for (i=0; i<spans.length; i++) {
|
||||
if (spans[i].className == "footnote") {
|
||||
n++;
|
||||
var note = spans[i].getAttribute("data-note");
|
||||
if (!note) {
|
||||
// Use [\s\S] in place of . so multi-line matches work.
|
||||
// Because JavaScript has no s (dotall) regex flag.
|
||||
note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
|
||||
spans[i].innerHTML =
|
||||
"[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
|
||||
"' title='View footnote' class='footnote'>" + n + "</a>]";
|
||||
spans[i].setAttribute("data-note", note);
|
||||
}
|
||||
noteholder.innerHTML +=
|
||||
"<div class='footnote' id='_footnote_" + n + "'>" +
|
||||
"<a href='#_footnoteref_" + n + "' title='Return to text'>" +
|
||||
n + "</a>. " + note + "</div>";
|
||||
var id =spans[i].getAttribute("id");
|
||||
if (id != null) refs["#"+id] = n;
|
||||
}
|
||||
}
|
||||
if (n == 0)
|
||||
noteholder.parentNode.removeChild(noteholder);
|
||||
else {
|
||||
// Process footnoterefs.
|
||||
for (i=0; i<spans.length; i++) {
|
||||
if (spans[i].className == "footnoteref") {
|
||||
var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
|
||||
href = href.match(/#.*/)[0]; // Because IE return full URL.
|
||||
n = refs[href];
|
||||
spans[i].innerHTML =
|
||||
"[<a href='#_footnote_" + n +
|
||||
"' title='View footnote' class='footnote'>" + n + "</a>]";
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
install: function(toclevels) {
|
||||
var timerId;
|
||||
|
||||
function reinstall() {
|
||||
asciidoc.footnotes();
|
||||
if (toclevels) {
|
||||
asciidoc.toc(toclevels);
|
||||
}
|
||||
}
|
||||
|
||||
function reinstallAndRemoveTimer() {
|
||||
clearInterval(timerId);
|
||||
reinstall();
|
||||
}
|
||||
|
||||
timerId = setInterval(reinstall, 500);
|
||||
if (document.addEventListener)
|
||||
document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
|
||||
else
|
||||
window.onload = reinstallAndRemoveTimer;
|
||||
}
|
||||
|
||||
}
|
||||
asciidoc.install(2);
|
||||
/*]]>*/
|
||||
</script>
|
||||
</head>
|
||||
<body class="article">
|
||||
<div id="header">
|
||||
<div id="toc">
|
||||
<div id="toctitle">Table of Contents</div>
|
||||
<noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
|
||||
</div>
|
||||
</div>
|
||||
<div id="content">
|
||||
<div class="sect1">
|
||||
<h2 id="_how_does_spice_handle_threading">1. How does SPICE handle threading</h2>
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph"><p>Lots of code run in a single thread.</p></div>
|
||||
<div class="paragraph"><p>Qemu usually calls SPICE from its main thread except on callbacks to code
|
||||
already running in different threads.</p></div>
|
||||
<div class="paragraph"><p>Channels (RedChannel/RedChannelClient code) run mostly on a single
|
||||
thread except RedChannels on creation and destruction which MUST be
|
||||
done in the main thread.
|
||||
Lots of channels run in the main thread but currently CursorChannel and
|
||||
DisplayChannel are run from within a thread created by RedWorker.
|
||||
Note that different CursorChannel/DisplayChannel (they differ by id) run in
|
||||
separate RedWorker threads (currently a single RedWorker thread runs a pair
|
||||
of CursorChannel and DisplayChannel).</p></div>
|
||||
<div class="paragraph"><p>RedChannelClient runs in the RedChannel thread. Creation is done in the same
|
||||
thread while destruction can happen in different threads.</p></div>
|
||||
<div class="paragraph"><p>A RedClient instance groups the various RedChannelClient connected to
|
||||
the same remote SPICE client.
|
||||
These RedChannelClient instances can run in separate threads:
|
||||
MainChannelClient and most of the other RedChannelClient will be
|
||||
running in the main thread, while the CursorChannelClient and the
|
||||
DisplayChannelClient usually will be running from a different thread.</p></div>
|
||||
<div class="paragraph"><p>Another important aspect of dealing with multiple threads are the dispatchers.
|
||||
Dispatchers are used to send messages/request from one thread to another.
|
||||
The main dispatcher is used to send requests to the main thread.
|
||||
The Qxl uses a dispatcher to send requests to the RedWorker which will forward
|
||||
to DisplayChannel/CursorChannel.</p></div>
|
||||
<div class="paragraph"><p>RedClient may call some RedChannelClient functions using some callbacks
|
||||
registered inside ClientCbs. Usually these callbacks are functions that do the
|
||||
job directly if the RedChannel is running in the main thread or they use a
|
||||
dispatcher to do the job in the right thread. Currently there are 3 callbacks:
|
||||
connect, disconnect and migrate. Connect and migrate are asynchronous (the job
|
||||
is done while the current thread is doing something else) while disconnect is
|
||||
synchronous (the main thread will wait for termination).</p></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect1">
|
||||
<h2 id="_reference_counting_and_ownership">2. Reference counting and ownership</h2>
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph"><p>→ pointer</p></div>
|
||||
<div class="paragraph"><p>⇒ pointer with owning (mostly GObject ref counting)</p></div>
|
||||
<div class="paragraph"><p>RedChannelClient::client → RedClient</p></div>
|
||||
<div class="paragraph"><p>RedClient::channels ⇒ RedChannelClient</p></div>
|
||||
<div class="paragraph"><p>RedClient::mcc → MainChannelClient</p></div>
|
||||
<div class="paragraph"><p>RedChannelClient::channel ⇒ RedChannel</p></div>
|
||||
<div class="paragraph"><p>RedChannel::clients → RedChannelClient</p></div>
|
||||
<div class="paragraph"><p>The RedClient represents a connection from a remote SPICE client,
|
||||
RedClient::channels corresponding to the connections for the individual
|
||||
channels. Their lifetime is tied to the TCP connection to this remote client.
|
||||
When a disconnection is detected, the corresponding RedChannelClient are
|
||||
removed from RedClient::channels and RedChannel::clients (the main owner of
|
||||
RedChannelClient is RedClient).
|
||||
When MainChannelClient is disconnected, all RedChannelClients connected to the
|
||||
same RedClient are automatically disconnected.</p></div>
|
||||
<div class="paragraph"><p>Who owns RedClient? RedClient is released when the MainChannelClient attached
|
||||
to it is disconnected. In this case a request is scheduled in the main thread
|
||||
(even if MainChannelClient runs on the main thread too) and
|
||||
red_client_disconnect is called which calls red_client_destroy which uses
|
||||
g_object_unref to free the object.</p></div>
|
||||
<div class="paragraph"><p>Where is the MainChannelClient freed? On disconnection like other channel
|
||||
clients, currently before RedClient which will have a dangling pointer.</p></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="footnotes"><hr /></div>
|
||||
<div id="footer">
|
||||
<div id="footer-text">
|
||||
Last updated 2018-07-12 18:35:03 CEST
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,74 +0,0 @@
|
||||
How does SPICE handle threading
|
||||
-------------------------------
|
||||
|
||||
Lots of code run in a single thread.
|
||||
|
||||
Qemu usually calls SPICE from its main thread except on callbacks to code
|
||||
already running in different threads.
|
||||
|
||||
Channels (RedChannel/RedChannelClient code) run mostly on a single
|
||||
thread except RedChannels on creation and destruction which MUST be
|
||||
done in the main thread.
|
||||
Lots of channels run in the main thread but currently CursorChannel and
|
||||
DisplayChannel are run from within a thread created by RedWorker.
|
||||
Note that different CursorChannel/DisplayChannel (they differ by id) run in
|
||||
separate RedWorker threads (currently a single RedWorker thread runs a pair
|
||||
of CursorChannel and DisplayChannel).
|
||||
|
||||
RedChannelClient runs in the RedChannel thread. Creation is done in the same
|
||||
thread while destruction can happen in different threads.
|
||||
|
||||
A RedClient instance groups the various RedChannelClient connected to
|
||||
the same remote SPICE client.
|
||||
These RedChannelClient instances can run in separate threads:
|
||||
MainChannelClient and most of the other RedChannelClient will be
|
||||
running in the main thread, while the CursorChannelClient and the
|
||||
DisplayChannelClient usually will be running from a different thread.
|
||||
|
||||
Another important aspect of dealing with multiple threads are the dispatchers.
|
||||
Dispatchers are used to send messages/request from one thread to another.
|
||||
The main dispatcher is used to send requests to the main thread.
|
||||
The Qxl uses a dispatcher to send requests to the RedWorker which will forward
|
||||
to DisplayChannel/CursorChannel.
|
||||
|
||||
RedClient may call some RedChannelClient functions using some callbacks
|
||||
registered inside ClientCbs. Usually these callbacks are functions that do the
|
||||
job directly if the RedChannel is running in the main thread or they use a
|
||||
dispatcher to do the job in the right thread. Currently there are 3 callbacks:
|
||||
connect, disconnect and migrate. Connect and migrate are asynchronous (the job
|
||||
is done while the current thread is doing something else) while disconnect is
|
||||
synchronous (the main thread will wait for termination).
|
||||
|
||||
Reference counting and ownership
|
||||
--------------------------------
|
||||
-> pointer
|
||||
|
||||
=> pointer with owning (mostly GObject ref counting)
|
||||
|
||||
RedChannelClient::client -> RedClient
|
||||
|
||||
RedClient::channels => RedChannelClient
|
||||
|
||||
RedClient::mcc -> MainChannelClient
|
||||
|
||||
RedChannelClient::channel => RedChannel
|
||||
|
||||
RedChannel::clients -> RedChannelClient
|
||||
|
||||
The RedClient represents a connection from a remote SPICE client,
|
||||
RedClient::channels corresponding to the connections for the individual
|
||||
channels. Their lifetime is tied to the TCP connection to this remote client.
|
||||
When a disconnection is detected, the corresponding RedChannelClient are
|
||||
removed from RedClient::channels and RedChannel::clients (the main owner of
|
||||
RedChannelClient is RedClient).
|
||||
When MainChannelClient is disconnected, all RedChannelClients connected to the
|
||||
same RedClient are automatically disconnected.
|
||||
|
||||
Who owns RedClient? RedClient is released when the MainChannelClient attached
|
||||
to it is disconnected. In this case a request is scheduled in the main thread
|
||||
(even if MainChannelClient runs on the main thread too) and
|
||||
red_client_disconnect is called which calls red_client_destroy which uses
|
||||
g_object_unref to free the object.
|
||||
|
||||
Where is the MainChannelClient freed? On disconnection like other channel
|
||||
clients, currently before RedClient which will have a dangling pointer.
|
501
spice/install-sh
501
spice/install-sh
@ -1,501 +0,0 @@
|
||||
#!/bin/sh
|
||||
# install - install a program, script, or datafile
|
||||
|
||||
scriptversion=2016-01-11.22; # UTC
|
||||
|
||||
# This originates from X11R5 (mit/util/scripts/install.sh), which was
|
||||
# later released in X11R6 (xc/config/util/install.sh) with the
|
||||
# following copyright and license.
|
||||
#
|
||||
# Copyright (C) 1994 X Consortium
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
||||
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
|
||||
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
# Except as contained in this notice, the name of the X Consortium shall not
|
||||
# be used in advertising or otherwise to promote the sale, use or other deal-
|
||||
# ings in this Software without prior written authorization from the X Consor-
|
||||
# tium.
|
||||
#
|
||||
#
|
||||
# FSF changes to this file are in the public domain.
|
||||
#
|
||||
# Calling this script install-sh is preferred over install.sh, to prevent
|
||||
# 'make' implicit rules from creating a file called install from it
|
||||
# when there is no Makefile.
|
||||
#
|
||||
# This script is compatible with the BSD install script, but was written
|
||||
# from scratch.
|
||||
|
||||
tab=' '
|
||||
nl='
|
||||
'
|
||||
IFS=" $tab$nl"
|
||||
|
||||
# Set DOITPROG to "echo" to test this script.
|
||||
|
||||
doit=${DOITPROG-}
|
||||
doit_exec=${doit:-exec}
|
||||
|
||||
# Put in absolute file names if you don't have them in your path;
|
||||
# or use environment vars.
|
||||
|
||||
chgrpprog=${CHGRPPROG-chgrp}
|
||||
chmodprog=${CHMODPROG-chmod}
|
||||
chownprog=${CHOWNPROG-chown}
|
||||
cmpprog=${CMPPROG-cmp}
|
||||
cpprog=${CPPROG-cp}
|
||||
mkdirprog=${MKDIRPROG-mkdir}
|
||||
mvprog=${MVPROG-mv}
|
||||
rmprog=${RMPROG-rm}
|
||||
stripprog=${STRIPPROG-strip}
|
||||
|
||||
posix_mkdir=
|
||||
|
||||
# Desired mode of installed file.
|
||||
mode=0755
|
||||
|
||||
chgrpcmd=
|
||||
chmodcmd=$chmodprog
|
||||
chowncmd=
|
||||
mvcmd=$mvprog
|
||||
rmcmd="$rmprog -f"
|
||||
stripcmd=
|
||||
|
||||
src=
|
||||
dst=
|
||||
dir_arg=
|
||||
dst_arg=
|
||||
|
||||
copy_on_change=false
|
||||
is_target_a_directory=possibly
|
||||
|
||||
usage="\
|
||||
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
|
||||
or: $0 [OPTION]... SRCFILES... DIRECTORY
|
||||
or: $0 [OPTION]... -t DIRECTORY SRCFILES...
|
||||
or: $0 [OPTION]... -d DIRECTORIES...
|
||||
|
||||
In the 1st form, copy SRCFILE to DSTFILE.
|
||||
In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
|
||||
In the 4th, create DIRECTORIES.
|
||||
|
||||
Options:
|
||||
--help display this help and exit.
|
||||
--version display version info and exit.
|
||||
|
||||
-c (ignored)
|
||||
-C install only if different (preserve the last data modification time)
|
||||
-d create directories instead of installing files.
|
||||
-g GROUP $chgrpprog installed files to GROUP.
|
||||
-m MODE $chmodprog installed files to MODE.
|
||||
-o USER $chownprog installed files to USER.
|
||||
-s $stripprog installed files.
|
||||
-t DIRECTORY install into DIRECTORY.
|
||||
-T report an error if DSTFILE is a directory.
|
||||
|
||||
Environment variables override the default commands:
|
||||
CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
|
||||
RMPROG STRIPPROG
|
||||
"
|
||||
|
||||
while test $# -ne 0; do
|
||||
case $1 in
|
||||
-c) ;;
|
||||
|
||||
-C) copy_on_change=true;;
|
||||
|
||||
-d) dir_arg=true;;
|
||||
|
||||
-g) chgrpcmd="$chgrpprog $2"
|
||||
shift;;
|
||||
|
||||
--help) echo "$usage"; exit $?;;
|
||||
|
||||
-m) mode=$2
|
||||
case $mode in
|
||||
*' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
|
||||
echo "$0: invalid mode: $mode" >&2
|
||||
exit 1;;
|
||||
esac
|
||||
shift;;
|
||||
|
||||
-o) chowncmd="$chownprog $2"
|
||||
shift;;
|
||||
|
||||
-s) stripcmd=$stripprog;;
|
||||
|
||||
-t)
|
||||
is_target_a_directory=always
|
||||
dst_arg=$2
|
||||
# Protect names problematic for 'test' and other utilities.
|
||||
case $dst_arg in
|
||||
-* | [=\(\)!]) dst_arg=./$dst_arg;;
|
||||
esac
|
||||
shift;;
|
||||
|
||||
-T) is_target_a_directory=never;;
|
||||
|
||||
--version) echo "$0 $scriptversion"; exit $?;;
|
||||
|
||||
--) shift
|
||||
break;;
|
||||
|
||||
-*) echo "$0: invalid option: $1" >&2
|
||||
exit 1;;
|
||||
|
||||
*) break;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
# We allow the use of options -d and -T together, by making -d
|
||||
# take the precedence; this is for compatibility with GNU install.
|
||||
|
||||
if test -n "$dir_arg"; then
|
||||
if test -n "$dst_arg"; then
|
||||
echo "$0: target directory not allowed when installing a directory." >&2
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
|
||||
# When -d is used, all remaining arguments are directories to create.
|
||||
# When -t is used, the destination is already specified.
|
||||
# Otherwise, the last argument is the destination. Remove it from $@.
|
||||
for arg
|
||||
do
|
||||
if test -n "$dst_arg"; then
|
||||
# $@ is not empty: it contains at least $arg.
|
||||
set fnord "$@" "$dst_arg"
|
||||
shift # fnord
|
||||
fi
|
||||
shift # arg
|
||||
dst_arg=$arg
|
||||
# Protect names problematic for 'test' and other utilities.
|
||||
case $dst_arg in
|
||||
-* | [=\(\)!]) dst_arg=./$dst_arg;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
|
||||
if test $# -eq 0; then
|
||||
if test -z "$dir_arg"; then
|
||||
echo "$0: no input file specified." >&2
|
||||
exit 1
|
||||
fi
|
||||
# It's OK to call 'install-sh -d' without argument.
|
||||
# This can happen when creating conditional directories.
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if test -z "$dir_arg"; then
|
||||
if test $# -gt 1 || test "$is_target_a_directory" = always; then
|
||||
if test ! -d "$dst_arg"; then
|
||||
echo "$0: $dst_arg: Is not a directory." >&2
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if test -z "$dir_arg"; then
|
||||
do_exit='(exit $ret); exit $ret'
|
||||
trap "ret=129; $do_exit" 1
|
||||
trap "ret=130; $do_exit" 2
|
||||
trap "ret=141; $do_exit" 13
|
||||
trap "ret=143; $do_exit" 15
|
||||
|
||||
# Set umask so as not to create temps with too-generous modes.
|
||||
# However, 'strip' requires both read and write access to temps.
|
||||
case $mode in
|
||||
# Optimize common cases.
|
||||
*644) cp_umask=133;;
|
||||
*755) cp_umask=22;;
|
||||
|
||||
*[0-7])
|
||||
if test -z "$stripcmd"; then
|
||||
u_plus_rw=
|
||||
else
|
||||
u_plus_rw='% 200'
|
||||
fi
|
||||
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
|
||||
*)
|
||||
if test -z "$stripcmd"; then
|
||||
u_plus_rw=
|
||||
else
|
||||
u_plus_rw=,u+rw
|
||||
fi
|
||||
cp_umask=$mode$u_plus_rw;;
|
||||
esac
|
||||
fi
|
||||
|
||||
for src
|
||||
do
|
||||
# Protect names problematic for 'test' and other utilities.
|
||||
case $src in
|
||||
-* | [=\(\)!]) src=./$src;;
|
||||
esac
|
||||
|
||||
if test -n "$dir_arg"; then
|
||||
dst=$src
|
||||
dstdir=$dst
|
||||
test -d "$dstdir"
|
||||
dstdir_status=$?
|
||||
else
|
||||
|
||||
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
|
||||
# might cause directories to be created, which would be especially bad
|
||||
# if $src (and thus $dsttmp) contains '*'.
|
||||
if test ! -f "$src" && test ! -d "$src"; then
|
||||
echo "$0: $src does not exist." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if test -z "$dst_arg"; then
|
||||
echo "$0: no destination specified." >&2
|
||||
exit 1
|
||||
fi
|
||||
dst=$dst_arg
|
||||
|
||||
# If destination is a directory, append the input filename; won't work
|
||||
# if double slashes aren't ignored.
|
||||
if test -d "$dst"; then
|
||||
if test "$is_target_a_directory" = never; then
|
||||
echo "$0: $dst_arg: Is a directory" >&2
|
||||
exit 1
|
||||
fi
|
||||
dstdir=$dst
|
||||
dst=$dstdir/`basename "$src"`
|
||||
dstdir_status=0
|
||||
else
|
||||
dstdir=`dirname "$dst"`
|
||||
test -d "$dstdir"
|
||||
dstdir_status=$?
|
||||
fi
|
||||
fi
|
||||
|
||||
obsolete_mkdir_used=false
|
||||
|
||||
if test $dstdir_status != 0; then
|
||||
case $posix_mkdir in
|
||||
'')
|
||||
# Create intermediate dirs using mode 755 as modified by the umask.
|
||||
# This is like FreeBSD 'install' as of 1997-10-28.
|
||||
umask=`umask`
|
||||
case $stripcmd.$umask in
|
||||
# Optimize common cases.
|
||||
*[2367][2367]) mkdir_umask=$umask;;
|
||||
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
|
||||
|
||||
*[0-7])
|
||||
mkdir_umask=`expr $umask + 22 \
|
||||
- $umask % 100 % 40 + $umask % 20 \
|
||||
- $umask % 10 % 4 + $umask % 2
|
||||
`;;
|
||||
*) mkdir_umask=$umask,go-w;;
|
||||
esac
|
||||
|
||||
# With -d, create the new directory with the user-specified mode.
|
||||
# Otherwise, rely on $mkdir_umask.
|
||||
if test -n "$dir_arg"; then
|
||||
mkdir_mode=-m$mode
|
||||
else
|
||||
mkdir_mode=
|
||||
fi
|
||||
|
||||
posix_mkdir=false
|
||||
case $umask in
|
||||
*[123567][0-7][0-7])
|
||||
# POSIX mkdir -p sets u+wx bits regardless of umask, which
|
||||
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
|
||||
;;
|
||||
*)
|
||||
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
|
||||
trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
|
||||
|
||||
if (umask $mkdir_umask &&
|
||||
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
|
||||
then
|
||||
if test -z "$dir_arg" || {
|
||||
# Check for POSIX incompatibilities with -m.
|
||||
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
|
||||
# other-writable bit of parent directory when it shouldn't.
|
||||
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
|
||||
ls_ld_tmpdir=`ls -ld "$tmpdir"`
|
||||
case $ls_ld_tmpdir in
|
||||
d????-?r-*) different_mode=700;;
|
||||
d????-?--*) different_mode=755;;
|
||||
*) false;;
|
||||
esac &&
|
||||
$mkdirprog -m$different_mode -p -- "$tmpdir" && {
|
||||
ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
|
||||
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
|
||||
}
|
||||
}
|
||||
then posix_mkdir=:
|
||||
fi
|
||||
rmdir "$tmpdir/d" "$tmpdir"
|
||||
else
|
||||
# Remove any dirs left behind by ancient mkdir implementations.
|
||||
rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
|
||||
fi
|
||||
trap '' 0;;
|
||||
esac;;
|
||||
esac
|
||||
|
||||
if
|
||||
$posix_mkdir && (
|
||||
umask $mkdir_umask &&
|
||||
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
|
||||
)
|
||||
then :
|
||||
else
|
||||
|
||||
# The umask is ridiculous, or mkdir does not conform to POSIX,
|
||||
# or it failed possibly due to a race condition. Create the
|
||||
# directory the slow way, step by step, checking for races as we go.
|
||||
|
||||
case $dstdir in
|
||||
/*) prefix='/';;
|
||||
[-=\(\)!]*) prefix='./';;
|
||||
*) prefix='';;
|
||||
esac
|
||||
|
||||
oIFS=$IFS
|
||||
IFS=/
|
||||
set -f
|
||||
set fnord $dstdir
|
||||
shift
|
||||
set +f
|
||||
IFS=$oIFS
|
||||
|
||||
prefixes=
|
||||
|
||||
for d
|
||||
do
|
||||
test X"$d" = X && continue
|
||||
|
||||
prefix=$prefix$d
|
||||
if test -d "$prefix"; then
|
||||
prefixes=
|
||||
else
|
||||
if $posix_mkdir; then
|
||||
(umask=$mkdir_umask &&
|
||||
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
|
||||
# Don't fail if two instances are running concurrently.
|
||||
test -d "$prefix" || exit 1
|
||||
else
|
||||
case $prefix in
|
||||
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
|
||||
*) qprefix=$prefix;;
|
||||
esac
|
||||
prefixes="$prefixes '$qprefix'"
|
||||
fi
|
||||
fi
|
||||
prefix=$prefix/
|
||||
done
|
||||
|
||||
if test -n "$prefixes"; then
|
||||
# Don't fail if two instances are running concurrently.
|
||||
(umask $mkdir_umask &&
|
||||
eval "\$doit_exec \$mkdirprog $prefixes") ||
|
||||
test -d "$dstdir" || exit 1
|
||||
obsolete_mkdir_used=true
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if test -n "$dir_arg"; then
|
||||
{ test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
|
||||
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
|
||||
{ test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
|
||||
test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
|
||||
else
|
||||
|
||||
# Make a couple of temp file names in the proper directory.
|
||||
dsttmp=$dstdir/_inst.$$_
|
||||
rmtmp=$dstdir/_rm.$$_
|
||||
|
||||
# Trap to clean up those temp files at exit.
|
||||
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
|
||||
|
||||
# Copy the file name to the temp name.
|
||||
(umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
|
||||
|
||||
# and set any options; do chmod last to preserve setuid bits.
|
||||
#
|
||||
# If any of these fail, we abort the whole thing. If we want to
|
||||
# ignore errors from any of these, just make sure not to ignore
|
||||
# errors from the above "$doit $cpprog $src $dsttmp" command.
|
||||
#
|
||||
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
|
||||
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
|
||||
{ test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
|
||||
{ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
|
||||
|
||||
# If -C, don't bother to copy if it wouldn't change the file.
|
||||
if $copy_on_change &&
|
||||
old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
|
||||
new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
|
||||
set -f &&
|
||||
set X $old && old=:$2:$4:$5:$6 &&
|
||||
set X $new && new=:$2:$4:$5:$6 &&
|
||||
set +f &&
|
||||
test "$old" = "$new" &&
|
||||
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
|
||||
then
|
||||
rm -f "$dsttmp"
|
||||
else
|
||||
# Rename the file to the real destination.
|
||||
$doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
|
||||
|
||||
# The rename failed, perhaps because mv can't rename something else
|
||||
# to itself, or perhaps because mv is so ancient that it does not
|
||||
# support -f.
|
||||
{
|
||||
# Now remove or move aside any old file at destination location.
|
||||
# We try this two ways since rm can't unlink itself on some
|
||||
# systems and the destination file might be busy for other
|
||||
# reasons. In this case, the final cleanup might fail but the new
|
||||
# file should still install successfully.
|
||||
{
|
||||
test ! -f "$dst" ||
|
||||
$doit $rmcmd -f "$dst" 2>/dev/null ||
|
||||
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
|
||||
{ $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
|
||||
} ||
|
||||
{ echo "$0: cannot unlink or rename $dst" >&2
|
||||
(exit 1); exit 1
|
||||
}
|
||||
} &&
|
||||
|
||||
# Now rename the file to the real destination.
|
||||
$doit $mvcmd "$dsttmp" "$dst"
|
||||
}
|
||||
fi || exit 1
|
||||
|
||||
trap '' 0
|
||||
fi
|
||||
done
|
||||
|
||||
# Local variables:
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-time-zone: "UTC0"
|
||||
# time-stamp-end: "; # UTC"
|
||||
# End:
|
11149
spice/ltmain.sh
11149
spice/ltmain.sh
File diff suppressed because it is too large
Load Diff
@ -1,235 +0,0 @@
|
||||
# ===========================================================================
|
||||
# https://www.gnu.org/software/autoconf-archive/ax_valgrind_check.html
|
||||
# ===========================================================================
|
||||
#
|
||||
# SYNOPSIS
|
||||
#
|
||||
# AX_VALGRIND_DFLT(memcheck|helgrind|drd|sgcheck, on|off)
|
||||
# AX_VALGRIND_CHECK()
|
||||
#
|
||||
# DESCRIPTION
|
||||
#
|
||||
# AX_VALGRIND_CHECK checks whether Valgrind is present and, if so, allows
|
||||
# running `make check` under a variety of Valgrind tools to check for
|
||||
# memory and threading errors.
|
||||
#
|
||||
# Defines VALGRIND_CHECK_RULES which should be substituted in your
|
||||
# Makefile; and $enable_valgrind which can be used in subsequent configure
|
||||
# output. VALGRIND_ENABLED is defined and substituted, and corresponds to
|
||||
# the value of the --enable-valgrind option, which defaults to being
|
||||
# enabled if Valgrind is installed and disabled otherwise. Individual
|
||||
# Valgrind tools can be disabled via --disable-valgrind-<tool>, the
|
||||
# default is configurable via the AX_VALGRIND_DFLT command or is to use
|
||||
# all commands not disabled via AX_VALGRIND_DFLT. All AX_VALGRIND_DFLT
|
||||
# calls must be made before the call to AX_VALGRIND_CHECK.
|
||||
#
|
||||
# If unit tests are written using a shell script and automake's
|
||||
# LOG_COMPILER system, the $(VALGRIND) variable can be used within the
|
||||
# shell scripts to enable Valgrind, as described here:
|
||||
#
|
||||
# https://www.gnu.org/software/gnulib/manual/html_node/Running-self_002dtests-under-valgrind.html
|
||||
#
|
||||
# Usage example:
|
||||
#
|
||||
# configure.ac:
|
||||
#
|
||||
# AX_VALGRIND_DFLT([sgcheck], [off])
|
||||
# AX_VALGRIND_CHECK
|
||||
#
|
||||
# Makefile.am:
|
||||
#
|
||||
# @VALGRIND_CHECK_RULES@
|
||||
# VALGRIND_SUPPRESSIONS_FILES = my-project.supp
|
||||
# EXTRA_DIST = my-project.supp
|
||||
#
|
||||
# This results in a "check-valgrind" rule being added to any Makefile.am
|
||||
# which includes "@VALGRIND_CHECK_RULES@" (assuming the module has been
|
||||
# configured with --enable-valgrind). Running `make check-valgrind` in
|
||||
# that directory will run the module's test suite (`make check`) once for
|
||||
# each of the available Valgrind tools (out of memcheck, helgrind and drd)
|
||||
# while the sgcheck will be skipped unless enabled again on the
|
||||
# commandline with --enable-valgrind-sgcheck. The results for each check
|
||||
# will be output to test-suite-$toolname.log. The target will succeed if
|
||||
# there are zero errors and fail otherwise.
|
||||
#
|
||||
# Alternatively, a "check-valgrind-$TOOL" rule will be added, for $TOOL in
|
||||
# memcheck, helgrind, drd and sgcheck. These are useful because often only
|
||||
# some of those tools can be ran cleanly on a codebase.
|
||||
#
|
||||
# The macro supports running with and without libtool.
|
||||
#
|
||||
# LICENSE
|
||||
#
|
||||
# Copyright (c) 2014, 2015, 2016 Philip Withnall <philip.withnall@collabora.co.uk>
|
||||
#
|
||||
# Copying and distribution of this file, with or without modification, are
|
||||
# permitted in any medium without royalty provided the copyright notice
|
||||
# and this notice are preserved. This file is offered as-is, without any
|
||||
# warranty.
|
||||
|
||||
#serial 15
|
||||
|
||||
dnl Configured tools
|
||||
m4_define([valgrind_tool_list], [[memcheck], [helgrind], [drd], [sgcheck]])
|
||||
m4_set_add_all([valgrind_exp_tool_set], [sgcheck])
|
||||
m4_foreach([vgtool], [valgrind_tool_list],
|
||||
[m4_define([en_dflt_valgrind_]vgtool, [on])])
|
||||
|
||||
AC_DEFUN([AX_VALGRIND_DFLT],[
|
||||
m4_define([en_dflt_valgrind_$1], [$2])
|
||||
])dnl
|
||||
|
||||
AC_DEFUN([AX_VALGRIND_CHECK],[
|
||||
dnl Check for --enable-valgrind
|
||||
AC_ARG_ENABLE([valgrind],
|
||||
[AS_HELP_STRING([--enable-valgrind], [Whether to enable Valgrind on the unit tests])],
|
||||
[enable_valgrind=$enableval],[enable_valgrind=])
|
||||
|
||||
AS_IF([test "$enable_valgrind" != "no"],[
|
||||
# Check for Valgrind.
|
||||
AC_CHECK_PROG([VALGRIND],[valgrind],[valgrind])
|
||||
AS_IF([test "$VALGRIND" = ""],[
|
||||
AS_IF([test "$enable_valgrind" = "yes"],[
|
||||
AC_MSG_ERROR([Could not find valgrind; either install it or reconfigure with --disable-valgrind])
|
||||
],[
|
||||
enable_valgrind=no
|
||||
])
|
||||
],[
|
||||
enable_valgrind=yes
|
||||
])
|
||||
])
|
||||
|
||||
AM_CONDITIONAL([VALGRIND_ENABLED],[test "$enable_valgrind" = "yes"])
|
||||
AC_SUBST([VALGRIND_ENABLED],[$enable_valgrind])
|
||||
|
||||
# Check for Valgrind tools we care about.
|
||||
[valgrind_enabled_tools=]
|
||||
m4_foreach([vgtool],[valgrind_tool_list],[
|
||||
AC_ARG_ENABLE([valgrind-]vgtool,
|
||||
m4_if(m4_defn([en_dflt_valgrind_]vgtool),[off],dnl
|
||||
[AS_HELP_STRING([--enable-valgrind-]vgtool, [Whether to use ]vgtool[ during the Valgrind tests])],dnl
|
||||
[AS_HELP_STRING([--disable-valgrind-]vgtool, [Whether to skip ]vgtool[ during the Valgrind tests])]),
|
||||
[enable_valgrind_]vgtool[=$enableval],
|
||||
[enable_valgrind_]vgtool[=])
|
||||
AS_IF([test "$enable_valgrind" = "no"],[
|
||||
enable_valgrind_]vgtool[=no],
|
||||
[test "$enable_valgrind_]vgtool[" ]dnl
|
||||
m4_if(m4_defn([en_dflt_valgrind_]vgtool), [off], [= "yes"], [!= "no"]),[
|
||||
AC_CACHE_CHECK([for Valgrind tool ]vgtool,
|
||||
[ax_cv_valgrind_tool_]vgtool,[
|
||||
ax_cv_valgrind_tool_]vgtool[=no
|
||||
m4_set_contains([valgrind_exp_tool_set],vgtool,
|
||||
[m4_define([vgtoolx],[exp-]vgtool)],
|
||||
[m4_define([vgtoolx],vgtool)])
|
||||
AS_IF([`$VALGRIND --tool=]vgtoolx[ --help >/dev/null 2>&1`],[
|
||||
ax_cv_valgrind_tool_]vgtool[=yes
|
||||
])
|
||||
])
|
||||
AS_IF([test "$ax_cv_valgrind_tool_]vgtool[" = "no"],[
|
||||
AS_IF([test "$enable_valgrind_]vgtool[" = "yes"],[
|
||||
AC_MSG_ERROR([Valgrind does not support ]vgtool[; reconfigure with --disable-valgrind-]vgtool)
|
||||
],[
|
||||
enable_valgrind_]vgtool[=no
|
||||
])
|
||||
],[
|
||||
enable_valgrind_]vgtool[=yes
|
||||
])
|
||||
])
|
||||
AS_IF([test "$enable_valgrind_]vgtool[" = "yes"],[
|
||||
valgrind_enabled_tools="$valgrind_enabled_tools ]m4_bpatsubst(vgtool,[^exp-])["
|
||||
])
|
||||
AC_SUBST([ENABLE_VALGRIND_]vgtool,[$enable_valgrind_]vgtool)
|
||||
])
|
||||
AC_SUBST([valgrind_tools],["]m4_join([ ], valgrind_tool_list)["])
|
||||
AC_SUBST([valgrind_enabled_tools],[$valgrind_enabled_tools])
|
||||
|
||||
[VALGRIND_CHECK_RULES='
|
||||
# Valgrind check
|
||||
#
|
||||
# Optional:
|
||||
# - VALGRIND_SUPPRESSIONS_FILES: Space-separated list of Valgrind suppressions
|
||||
# files to load. (Default: empty)
|
||||
# - VALGRIND_FLAGS: General flags to pass to all Valgrind tools.
|
||||
# (Default: --num-callers=30)
|
||||
# - VALGRIND_$toolname_FLAGS: Flags to pass to Valgrind $toolname (one of:
|
||||
# memcheck, helgrind, drd, sgcheck). (Default: various)
|
||||
|
||||
# Optional variables
|
||||
VALGRIND_SUPPRESSIONS ?= $(addprefix --suppressions=,$(VALGRIND_SUPPRESSIONS_FILES))
|
||||
VALGRIND_FLAGS ?= --num-callers=30
|
||||
VALGRIND_memcheck_FLAGS ?= --leak-check=full --show-reachable=no
|
||||
VALGRIND_helgrind_FLAGS ?= --history-level=approx
|
||||
VALGRIND_drd_FLAGS ?=
|
||||
VALGRIND_sgcheck_FLAGS ?=
|
||||
|
||||
# Internal use
|
||||
valgrind_log_files = $(addprefix test-suite-,$(addsuffix .log,$(valgrind_tools)))
|
||||
|
||||
valgrind_memcheck_flags = --tool=memcheck $(VALGRIND_memcheck_FLAGS)
|
||||
valgrind_helgrind_flags = --tool=helgrind $(VALGRIND_helgrind_FLAGS)
|
||||
valgrind_drd_flags = --tool=drd $(VALGRIND_drd_FLAGS)
|
||||
valgrind_sgcheck_flags = --tool=exp-sgcheck $(VALGRIND_sgcheck_FLAGS)
|
||||
|
||||
valgrind_quiet = $(valgrind_quiet_$(V))
|
||||
valgrind_quiet_ = $(valgrind_quiet_$(AM_DEFAULT_VERBOSITY))
|
||||
valgrind_quiet_0 = --quiet
|
||||
valgrind_v_use = $(valgrind_v_use_$(V))
|
||||
valgrind_v_use_ = $(valgrind_v_use_$(AM_DEFAULT_VERBOSITY))
|
||||
valgrind_v_use_0 = @echo " USE " $(patsubst check-valgrind-%,%,$''@):;
|
||||
|
||||
# Support running with and without libtool.
|
||||
ifneq ($(LIBTOOL),)
|
||||
valgrind_lt = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=execute
|
||||
else
|
||||
valgrind_lt =
|
||||
endif
|
||||
|
||||
# Use recursive makes in order to ignore errors during check
|
||||
check-valgrind:
|
||||
ifeq ($(VALGRIND_ENABLED),yes)
|
||||
$(A''M_V_at)$(MAKE) $(AM_MAKEFLAGS) -k \
|
||||
$(foreach tool, $(valgrind_enabled_tools), check-valgrind-$(tool))
|
||||
else
|
||||
@echo "Need to reconfigure with --enable-valgrind"
|
||||
endif
|
||||
|
||||
# Valgrind running
|
||||
VALGRIND_TESTS_ENVIRONMENT = \
|
||||
$(TESTS_ENVIRONMENT) \
|
||||
env VALGRIND=$(VALGRIND) \
|
||||
G_SLICE=always-malloc,debug-blocks \
|
||||
G_DEBUG=$${G_DEBUG:+$$G_DEBUG,}gc-friendly
|
||||
|
||||
VALGRIND_LOG_COMPILER = \
|
||||
$(valgrind_lt) \
|
||||
$(VALGRIND) $(VALGRIND_SUPPRESSIONS) --error-exitcode=1 $(VALGRIND_FLAGS)
|
||||
|
||||
define valgrind_tool_rule =
|
||||
check-valgrind-$(1):
|
||||
ifeq ($$(VALGRIND_ENABLED)-$$(ENABLE_VALGRIND_$(1)),yes-yes)
|
||||
$$(valgrind_v_use)$$(MAKE) check-TESTS \
|
||||
TESTS_ENVIRONMENT="$$(VALGRIND_TESTS_ENVIRONMENT)" \
|
||||
LOG_COMPILER="$$(VALGRIND_LOG_COMPILER)" \
|
||||
LOG_FLAGS="$$(valgrind_$(1)_flags)" \
|
||||
TEST_SUITE_LOG=test-suite-$(1).log
|
||||
else ifeq ($$(VALGRIND_ENABLED),yes)
|
||||
@echo "Need to reconfigure with --enable-valgrind-$(1)"
|
||||
else
|
||||
@echo "Need to reconfigure with --enable-valgrind"
|
||||
endif
|
||||
endef
|
||||
|
||||
$(foreach tool,$(valgrind_tools),$(eval $(call valgrind_tool_rule,$(tool))))
|
||||
|
||||
A''M_DISTCHECK_CONFIGURE_FLAGS ?=
|
||||
A''M_DISTCHECK_CONFIGURE_FLAGS += --disable-valgrind
|
||||
|
||||
MOSTLYCLEANFILES ?=
|
||||
MOSTLYCLEANFILES += $(valgrind_log_files)
|
||||
|
||||
.PHONY: check-valgrind $(add-prefix check-valgrind-,$(valgrind_tools))
|
||||
']
|
||||
|
||||
AC_SUBST([VALGRIND_CHECK_RULES])
|
||||
m4_ifdef([_AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE([VALGRIND_CHECK_RULES])])
|
||||
])
|
8372
spice/m4/libtool.m4
vendored
8372
spice/m4/libtool.m4
vendored
File diff suppressed because it is too large
Load Diff
437
spice/m4/ltoptions.m4
vendored
437
spice/m4/ltoptions.m4
vendored
@ -1,437 +0,0 @@
|
||||
# Helper functions for option handling. -*- Autoconf -*-
|
||||
#
|
||||
# Copyright (C) 2004-2005, 2007-2009, 2011-2015 Free Software
|
||||
# Foundation, Inc.
|
||||
# Written by Gary V. Vaughan, 2004
|
||||
#
|
||||
# This file is free software; the Free Software Foundation gives
|
||||
# unlimited permission to copy and/or distribute it, with or without
|
||||
# modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 8 ltoptions.m4
|
||||
|
||||
# This is to help aclocal find these macros, as it can't see m4_define.
|
||||
AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
|
||||
|
||||
|
||||
# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
|
||||
# ------------------------------------------
|
||||
m4_define([_LT_MANGLE_OPTION],
|
||||
[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
|
||||
|
||||
|
||||
# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
|
||||
# ---------------------------------------
|
||||
# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
|
||||
# matching handler defined, dispatch to it. Other OPTION-NAMEs are
|
||||
# saved as a flag.
|
||||
m4_define([_LT_SET_OPTION],
|
||||
[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
|
||||
m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
|
||||
_LT_MANGLE_DEFUN([$1], [$2]),
|
||||
[m4_warning([Unknown $1 option '$2'])])[]dnl
|
||||
])
|
||||
|
||||
|
||||
# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
|
||||
# ------------------------------------------------------------
|
||||
# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
|
||||
m4_define([_LT_IF_OPTION],
|
||||
[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
|
||||
|
||||
|
||||
# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
|
||||
# -------------------------------------------------------
|
||||
# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
|
||||
# are set.
|
||||
m4_define([_LT_UNLESS_OPTIONS],
|
||||
[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
|
||||
[m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
|
||||
[m4_define([$0_found])])])[]dnl
|
||||
m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
|
||||
])[]dnl
|
||||
])
|
||||
|
||||
|
||||
# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
|
||||
# ----------------------------------------
|
||||
# OPTION-LIST is a space-separated list of Libtool options associated
|
||||
# with MACRO-NAME. If any OPTION has a matching handler declared with
|
||||
# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
|
||||
# the unknown option and exit.
|
||||
m4_defun([_LT_SET_OPTIONS],
|
||||
[# Set options
|
||||
m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
|
||||
[_LT_SET_OPTION([$1], _LT_Option)])
|
||||
|
||||
m4_if([$1],[LT_INIT],[
|
||||
dnl
|
||||
dnl Simply set some default values (i.e off) if boolean options were not
|
||||
dnl specified:
|
||||
_LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
|
||||
])
|
||||
_LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
|
||||
])
|
||||
dnl
|
||||
dnl If no reference was made to various pairs of opposing options, then
|
||||
dnl we run the default mode handler for the pair. For example, if neither
|
||||
dnl 'shared' nor 'disable-shared' was passed, we enable building of shared
|
||||
dnl archives by default:
|
||||
_LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
|
||||
_LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
|
||||
_LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
|
||||
_LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
|
||||
[_LT_ENABLE_FAST_INSTALL])
|
||||
_LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4],
|
||||
[_LT_WITH_AIX_SONAME([aix])])
|
||||
])
|
||||
])# _LT_SET_OPTIONS
|
||||
|
||||
|
||||
## --------------------------------- ##
|
||||
## Macros to handle LT_INIT options. ##
|
||||
## --------------------------------- ##
|
||||
|
||||
# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
|
||||
# -----------------------------------------
|
||||
m4_define([_LT_MANGLE_DEFUN],
|
||||
[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
|
||||
|
||||
|
||||
# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
|
||||
# -----------------------------------------------
|
||||
m4_define([LT_OPTION_DEFINE],
|
||||
[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
|
||||
])# LT_OPTION_DEFINE
|
||||
|
||||
|
||||
# dlopen
|
||||
# ------
|
||||
LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
|
||||
])
|
||||
|
||||
AU_DEFUN([AC_LIBTOOL_DLOPEN],
|
||||
[_LT_SET_OPTION([LT_INIT], [dlopen])
|
||||
AC_DIAGNOSE([obsolete],
|
||||
[$0: Remove this warning and the call to _LT_SET_OPTION when you
|
||||
put the 'dlopen' option into LT_INIT's first parameter.])
|
||||
])
|
||||
|
||||
dnl aclocal-1.4 backwards compatibility:
|
||||
dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
|
||||
|
||||
|
||||
# win32-dll
|
||||
# ---------
|
||||
# Declare package support for building win32 dll's.
|
||||
LT_OPTION_DEFINE([LT_INIT], [win32-dll],
|
||||
[enable_win32_dll=yes
|
||||
|
||||
case $host in
|
||||
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
|
||||
AC_CHECK_TOOL(AS, as, false)
|
||||
AC_CHECK_TOOL(DLLTOOL, dlltool, false)
|
||||
AC_CHECK_TOOL(OBJDUMP, objdump, false)
|
||||
;;
|
||||
esac
|
||||
|
||||
test -z "$AS" && AS=as
|
||||
_LT_DECL([], [AS], [1], [Assembler program])dnl
|
||||
|
||||
test -z "$DLLTOOL" && DLLTOOL=dlltool
|
||||
_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl
|
||||
|
||||
test -z "$OBJDUMP" && OBJDUMP=objdump
|
||||
_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl
|
||||
])# win32-dll
|
||||
|
||||
AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
|
||||
[AC_REQUIRE([AC_CANONICAL_HOST])dnl
|
||||
_LT_SET_OPTION([LT_INIT], [win32-dll])
|
||||
AC_DIAGNOSE([obsolete],
|
||||
[$0: Remove this warning and the call to _LT_SET_OPTION when you
|
||||
put the 'win32-dll' option into LT_INIT's first parameter.])
|
||||
])
|
||||
|
||||
dnl aclocal-1.4 backwards compatibility:
|
||||
dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
|
||||
|
||||
|
||||
# _LT_ENABLE_SHARED([DEFAULT])
|
||||
# ----------------------------
|
||||
# implement the --enable-shared flag, and supports the 'shared' and
|
||||
# 'disable-shared' LT_INIT options.
|
||||
# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'.
|
||||
m4_define([_LT_ENABLE_SHARED],
|
||||
[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
|
||||
AC_ARG_ENABLE([shared],
|
||||
[AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
|
||||
[build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])],
|
||||
[p=${PACKAGE-default}
|
||||
case $enableval in
|
||||
yes) enable_shared=yes ;;
|
||||
no) enable_shared=no ;;
|
||||
*)
|
||||
enable_shared=no
|
||||
# Look at the argument we got. We use all the common list separators.
|
||||
lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
|
||||
for pkg in $enableval; do
|
||||
IFS=$lt_save_ifs
|
||||
if test "X$pkg" = "X$p"; then
|
||||
enable_shared=yes
|
||||
fi
|
||||
done
|
||||
IFS=$lt_save_ifs
|
||||
;;
|
||||
esac],
|
||||
[enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
|
||||
|
||||
_LT_DECL([build_libtool_libs], [enable_shared], [0],
|
||||
[Whether or not to build shared libraries])
|
||||
])# _LT_ENABLE_SHARED
|
||||
|
||||
LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
|
||||
LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
|
||||
|
||||
# Old names:
|
||||
AC_DEFUN([AC_ENABLE_SHARED],
|
||||
[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
|
||||
])
|
||||
|
||||
AC_DEFUN([AC_DISABLE_SHARED],
|
||||
[_LT_SET_OPTION([LT_INIT], [disable-shared])
|
||||
])
|
||||
|
||||
AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
|
||||
AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
|
||||
|
||||
dnl aclocal-1.4 backwards compatibility:
|
||||
dnl AC_DEFUN([AM_ENABLE_SHARED], [])
|
||||
dnl AC_DEFUN([AM_DISABLE_SHARED], [])
|
||||
|
||||
|
||||
|
||||
# _LT_ENABLE_STATIC([DEFAULT])
|
||||
# ----------------------------
|
||||
# implement the --enable-static flag, and support the 'static' and
|
||||
# 'disable-static' LT_INIT options.
|
||||
# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'.
|
||||
m4_define([_LT_ENABLE_STATIC],
|
||||
[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
|
||||
AC_ARG_ENABLE([static],
|
||||
[AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
|
||||
[build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
|
||||
[p=${PACKAGE-default}
|
||||
case $enableval in
|
||||
yes) enable_static=yes ;;
|
||||
no) enable_static=no ;;
|
||||
*)
|
||||
enable_static=no
|
||||
# Look at the argument we got. We use all the common list separators.
|
||||
lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
|
||||
for pkg in $enableval; do
|
||||
IFS=$lt_save_ifs
|
||||
if test "X$pkg" = "X$p"; then
|
||||
enable_static=yes
|
||||
fi
|
||||
done
|
||||
IFS=$lt_save_ifs
|
||||
;;
|
||||
esac],
|
||||
[enable_static=]_LT_ENABLE_STATIC_DEFAULT)
|
||||
|
||||
_LT_DECL([build_old_libs], [enable_static], [0],
|
||||
[Whether or not to build static libraries])
|
||||
])# _LT_ENABLE_STATIC
|
||||
|
||||
LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
|
||||
LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
|
||||
|
||||
# Old names:
|
||||
AC_DEFUN([AC_ENABLE_STATIC],
|
||||
[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
|
||||
])
|
||||
|
||||
AC_DEFUN([AC_DISABLE_STATIC],
|
||||
[_LT_SET_OPTION([LT_INIT], [disable-static])
|
||||
])
|
||||
|
||||
AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
|
||||
AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
|
||||
|
||||
dnl aclocal-1.4 backwards compatibility:
|
||||
dnl AC_DEFUN([AM_ENABLE_STATIC], [])
|
||||
dnl AC_DEFUN([AM_DISABLE_STATIC], [])
|
||||
|
||||
|
||||
|
||||
# _LT_ENABLE_FAST_INSTALL([DEFAULT])
|
||||
# ----------------------------------
|
||||
# implement the --enable-fast-install flag, and support the 'fast-install'
|
||||
# and 'disable-fast-install' LT_INIT options.
|
||||
# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'.
|
||||
m4_define([_LT_ENABLE_FAST_INSTALL],
|
||||
[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
|
||||
AC_ARG_ENABLE([fast-install],
|
||||
[AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
|
||||
[optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
|
||||
[p=${PACKAGE-default}
|
||||
case $enableval in
|
||||
yes) enable_fast_install=yes ;;
|
||||
no) enable_fast_install=no ;;
|
||||
*)
|
||||
enable_fast_install=no
|
||||
# Look at the argument we got. We use all the common list separators.
|
||||
lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
|
||||
for pkg in $enableval; do
|
||||
IFS=$lt_save_ifs
|
||||
if test "X$pkg" = "X$p"; then
|
||||
enable_fast_install=yes
|
||||
fi
|
||||
done
|
||||
IFS=$lt_save_ifs
|
||||
;;
|
||||
esac],
|
||||
[enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
|
||||
|
||||
_LT_DECL([fast_install], [enable_fast_install], [0],
|
||||
[Whether or not to optimize for fast installation])dnl
|
||||
])# _LT_ENABLE_FAST_INSTALL
|
||||
|
||||
LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
|
||||
LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
|
||||
|
||||
# Old names:
|
||||
AU_DEFUN([AC_ENABLE_FAST_INSTALL],
|
||||
[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
|
||||
AC_DIAGNOSE([obsolete],
|
||||
[$0: Remove this warning and the call to _LT_SET_OPTION when you put
|
||||
the 'fast-install' option into LT_INIT's first parameter.])
|
||||
])
|
||||
|
||||
AU_DEFUN([AC_DISABLE_FAST_INSTALL],
|
||||
[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
|
||||
AC_DIAGNOSE([obsolete],
|
||||
[$0: Remove this warning and the call to _LT_SET_OPTION when you put
|
||||
the 'disable-fast-install' option into LT_INIT's first parameter.])
|
||||
])
|
||||
|
||||
dnl aclocal-1.4 backwards compatibility:
|
||||
dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
|
||||
dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
|
||||
|
||||
|
||||
# _LT_WITH_AIX_SONAME([DEFAULT])
|
||||
# ----------------------------------
|
||||
# implement the --with-aix-soname flag, and support the `aix-soname=aix'
|
||||
# and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. DEFAULT
|
||||
# is either `aix', `both' or `svr4'. If omitted, it defaults to `aix'.
|
||||
m4_define([_LT_WITH_AIX_SONAME],
|
||||
[m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl
|
||||
shared_archive_member_spec=
|
||||
case $host,$enable_shared in
|
||||
power*-*-aix[[5-9]]*,yes)
|
||||
AC_MSG_CHECKING([which variant of shared library versioning to provide])
|
||||
AC_ARG_WITH([aix-soname],
|
||||
[AS_HELP_STRING([--with-aix-soname=aix|svr4|both],
|
||||
[shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])],
|
||||
[case $withval in
|
||||
aix|svr4|both)
|
||||
;;
|
||||
*)
|
||||
AC_MSG_ERROR([Unknown argument to --with-aix-soname])
|
||||
;;
|
||||
esac
|
||||
lt_cv_with_aix_soname=$with_aix_soname],
|
||||
[AC_CACHE_VAL([lt_cv_with_aix_soname],
|
||||
[lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT)
|
||||
with_aix_soname=$lt_cv_with_aix_soname])
|
||||
AC_MSG_RESULT([$with_aix_soname])
|
||||
if test aix != "$with_aix_soname"; then
|
||||
# For the AIX way of multilib, we name the shared archive member
|
||||
# based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o',
|
||||
# and 'shr.imp' or 'shr_64.imp', respectively, for the Import File.
|
||||
# Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag,
|
||||
# the AIX toolchain works better with OBJECT_MODE set (default 32).
|
||||
if test 64 = "${OBJECT_MODE-32}"; then
|
||||
shared_archive_member_spec=shr_64
|
||||
else
|
||||
shared_archive_member_spec=shr
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
with_aix_soname=aix
|
||||
;;
|
||||
esac
|
||||
|
||||
_LT_DECL([], [shared_archive_member_spec], [0],
|
||||
[Shared archive member basename, for filename based shared library versioning on AIX])dnl
|
||||
])# _LT_WITH_AIX_SONAME
|
||||
|
||||
LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])])
|
||||
LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])])
|
||||
LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])])
|
||||
|
||||
|
||||
# _LT_WITH_PIC([MODE])
|
||||
# --------------------
|
||||
# implement the --with-pic flag, and support the 'pic-only' and 'no-pic'
|
||||
# LT_INIT options.
|
||||
# MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'.
|
||||
m4_define([_LT_WITH_PIC],
|
||||
[AC_ARG_WITH([pic],
|
||||
[AS_HELP_STRING([--with-pic@<:@=PKGS@:>@],
|
||||
[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
|
||||
[lt_p=${PACKAGE-default}
|
||||
case $withval in
|
||||
yes|no) pic_mode=$withval ;;
|
||||
*)
|
||||
pic_mode=default
|
||||
# Look at the argument we got. We use all the common list separators.
|
||||
lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
|
||||
for lt_pkg in $withval; do
|
||||
IFS=$lt_save_ifs
|
||||
if test "X$lt_pkg" = "X$lt_p"; then
|
||||
pic_mode=yes
|
||||
fi
|
||||
done
|
||||
IFS=$lt_save_ifs
|
||||
;;
|
||||
esac],
|
||||
[pic_mode=m4_default([$1], [default])])
|
||||
|
||||
_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
|
||||
])# _LT_WITH_PIC
|
||||
|
||||
LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
|
||||
LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
|
||||
|
||||
# Old name:
|
||||
AU_DEFUN([AC_LIBTOOL_PICMODE],
|
||||
[_LT_SET_OPTION([LT_INIT], [pic-only])
|
||||
AC_DIAGNOSE([obsolete],
|
||||
[$0: Remove this warning and the call to _LT_SET_OPTION when you
|
||||
put the 'pic-only' option into LT_INIT's first parameter.])
|
||||
])
|
||||
|
||||
dnl aclocal-1.4 backwards compatibility:
|
||||
dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
|
||||
|
||||
## ----------------- ##
|
||||
## LTDL_INIT Options ##
|
||||
## ----------------- ##
|
||||
|
||||
m4_define([_LTDL_MODE], [])
|
||||
LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
|
||||
[m4_define([_LTDL_MODE], [nonrecursive])])
|
||||
LT_OPTION_DEFINE([LTDL_INIT], [recursive],
|
||||
[m4_define([_LTDL_MODE], [recursive])])
|
||||
LT_OPTION_DEFINE([LTDL_INIT], [subproject],
|
||||
[m4_define([_LTDL_MODE], [subproject])])
|
||||
|
||||
m4_define([_LTDL_TYPE], [])
|
||||
LT_OPTION_DEFINE([LTDL_INIT], [installable],
|
||||
[m4_define([_LTDL_TYPE], [installable])])
|
||||
LT_OPTION_DEFINE([LTDL_INIT], [convenience],
|
||||
[m4_define([_LTDL_TYPE], [convenience])])
|
124
spice/m4/ltsugar.m4
vendored
124
spice/m4/ltsugar.m4
vendored
@ -1,124 +0,0 @@
|
||||
# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*-
|
||||
#
|
||||
# Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software
|
||||
# Foundation, Inc.
|
||||
# Written by Gary V. Vaughan, 2004
|
||||
#
|
||||
# This file is free software; the Free Software Foundation gives
|
||||
# unlimited permission to copy and/or distribute it, with or without
|
||||
# modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 6 ltsugar.m4
|
||||
|
||||
# This is to help aclocal find these macros, as it can't see m4_define.
|
||||
AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
|
||||
|
||||
|
||||
# lt_join(SEP, ARG1, [ARG2...])
|
||||
# -----------------------------
|
||||
# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
|
||||
# associated separator.
|
||||
# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
|
||||
# versions in m4sugar had bugs.
|
||||
m4_define([lt_join],
|
||||
[m4_if([$#], [1], [],
|
||||
[$#], [2], [[$2]],
|
||||
[m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
|
||||
m4_define([_lt_join],
|
||||
[m4_if([$#$2], [2], [],
|
||||
[m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
|
||||
|
||||
|
||||
# lt_car(LIST)
|
||||
# lt_cdr(LIST)
|
||||
# ------------
|
||||
# Manipulate m4 lists.
|
||||
# These macros are necessary as long as will still need to support
|
||||
# Autoconf-2.59, which quotes differently.
|
||||
m4_define([lt_car], [[$1]])
|
||||
m4_define([lt_cdr],
|
||||
[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
|
||||
[$#], 1, [],
|
||||
[m4_dquote(m4_shift($@))])])
|
||||
m4_define([lt_unquote], $1)
|
||||
|
||||
|
||||
# lt_append(MACRO-NAME, STRING, [SEPARATOR])
|
||||
# ------------------------------------------
|
||||
# Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'.
|
||||
# Note that neither SEPARATOR nor STRING are expanded; they are appended
|
||||
# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
|
||||
# No SEPARATOR is output if MACRO-NAME was previously undefined (different
|
||||
# than defined and empty).
|
||||
#
|
||||
# This macro is needed until we can rely on Autoconf 2.62, since earlier
|
||||
# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
|
||||
m4_define([lt_append],
|
||||
[m4_define([$1],
|
||||
m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
|
||||
|
||||
|
||||
|
||||
# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
|
||||
# ----------------------------------------------------------
|
||||
# Produce a SEP delimited list of all paired combinations of elements of
|
||||
# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list
|
||||
# has the form PREFIXmINFIXSUFFIXn.
|
||||
# Needed until we can rely on m4_combine added in Autoconf 2.62.
|
||||
m4_define([lt_combine],
|
||||
[m4_if(m4_eval([$# > 3]), [1],
|
||||
[m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
|
||||
[[m4_foreach([_Lt_prefix], [$2],
|
||||
[m4_foreach([_Lt_suffix],
|
||||
]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
|
||||
[_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
|
||||
|
||||
|
||||
# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
|
||||
# -----------------------------------------------------------------------
|
||||
# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
|
||||
# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
|
||||
m4_define([lt_if_append_uniq],
|
||||
[m4_ifdef([$1],
|
||||
[m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
|
||||
[lt_append([$1], [$2], [$3])$4],
|
||||
[$5])],
|
||||
[lt_append([$1], [$2], [$3])$4])])
|
||||
|
||||
|
||||
# lt_dict_add(DICT, KEY, VALUE)
|
||||
# -----------------------------
|
||||
m4_define([lt_dict_add],
|
||||
[m4_define([$1($2)], [$3])])
|
||||
|
||||
|
||||
# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
|
||||
# --------------------------------------------
|
||||
m4_define([lt_dict_add_subkey],
|
||||
[m4_define([$1($2:$3)], [$4])])
|
||||
|
||||
|
||||
# lt_dict_fetch(DICT, KEY, [SUBKEY])
|
||||
# ----------------------------------
|
||||
m4_define([lt_dict_fetch],
|
||||
[m4_ifval([$3],
|
||||
m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
|
||||
m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
|
||||
|
||||
|
||||
# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
|
||||
# -----------------------------------------------------------------
|
||||
m4_define([lt_if_dict_fetch],
|
||||
[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
|
||||
[$5],
|
||||
[$6])])
|
||||
|
||||
|
||||
# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
|
||||
# --------------------------------------------------------------
|
||||
m4_define([lt_dict_filter],
|
||||
[m4_if([$5], [], [],
|
||||
[lt_join(m4_quote(m4_default([$4], [[, ]])),
|
||||
lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
|
||||
[lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
|
||||
])
|
23
spice/m4/ltversion.m4
vendored
23
spice/m4/ltversion.m4
vendored
@ -1,23 +0,0 @@
|
||||
# ltversion.m4 -- version numbers -*- Autoconf -*-
|
||||
#
|
||||
# Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc.
|
||||
# Written by Scott James Remnant, 2004
|
||||
#
|
||||
# This file is free software; the Free Software Foundation gives
|
||||
# unlimited permission to copy and/or distribute it, with or without
|
||||
# modifications, as long as this notice is preserved.
|
||||
|
||||
# @configure_input@
|
||||
|
||||
# serial 4179 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])
|
||||
|
||||
AC_DEFUN([LTVERSION_VERSION],
|
||||
[macro_version='2.4.6'
|
||||
macro_revision='2.4.6'
|
||||
_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
|
||||
_LT_DECL(, macro_revision, 0)
|
||||
])
|
99
spice/m4/lt~obsolete.m4
vendored
99
spice/m4/lt~obsolete.m4
vendored
@ -1,99 +0,0 @@
|
||||
# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*-
|
||||
#
|
||||
# Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software
|
||||
# Foundation, Inc.
|
||||
# Written by Scott James Remnant, 2004.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation gives
|
||||
# unlimited permission to copy and/or distribute it, with or without
|
||||
# modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 5 lt~obsolete.m4
|
||||
|
||||
# These exist entirely to fool aclocal when bootstrapping libtool.
|
||||
#
|
||||
# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN),
|
||||
# which have later been changed to m4_define as they aren't part of the
|
||||
# exported API, or moved to Autoconf or Automake where they belong.
|
||||
#
|
||||
# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN
|
||||
# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
|
||||
# using a macro with the same name in our local m4/libtool.m4 it'll
|
||||
# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
|
||||
# and doesn't know about Autoconf macros at all.)
|
||||
#
|
||||
# So we provide this file, which has a silly filename so it's always
|
||||
# included after everything else. This provides aclocal with the
|
||||
# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
|
||||
# because those macros already exist, or will be overwritten later.
|
||||
# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6.
|
||||
#
|
||||
# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
|
||||
# Yes, that means every name once taken will need to remain here until
|
||||
# we give up compatibility with versions before 1.7, at which point
|
||||
# we need to keep only those names which we still refer to.
|
||||
|
||||
# This is to help aclocal find these macros, as it can't see m4_define.
|
||||
AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
|
||||
|
||||
m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])])
|
||||
m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])])
|
||||
m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])])
|
||||
m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])])
|
||||
m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])])
|
||||
m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])])
|
||||
m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])])
|
||||
m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])])
|
||||
m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])])
|
||||
m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])])
|
||||
m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])])
|
||||
m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])])
|
||||
m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])])
|
||||
m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])])
|
||||
m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])])
|
||||
m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])])
|
||||
m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])])
|
||||
m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])])
|
||||
m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])])
|
||||
m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])])
|
||||
m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])])
|
||||
m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])])
|
||||
m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])])
|
||||
m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])])
|
||||
m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])])
|
||||
m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])])
|
||||
m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])])
|
||||
m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])])
|
||||
m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])])
|
||||
m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])])
|
||||
m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])])
|
||||
m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])])
|
||||
m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])])
|
||||
m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])])
|
||||
m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])])
|
||||
m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])])
|
||||
m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
|
||||
m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])])
|
||||
m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
|
||||
m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])])
|
||||
m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])])
|
||||
m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])])
|
||||
m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
|
||||
m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
|
||||
m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
|
||||
m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
|
||||
m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
|
||||
m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
|
||||
m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
|
||||
m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
|
||||
m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
|
||||
m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
|
||||
m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])])
|
||||
m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
|
||||
m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])])
|
||||
m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])])
|
||||
m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])])
|
||||
m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])])
|
||||
m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])])
|
||||
m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])])
|
||||
m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])])
|
@ -1,276 +0,0 @@
|
||||
# manywarnings.m4 serial 8
|
||||
dnl Copyright (C) 2008-2016 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl From Simon Josefsson
|
||||
|
||||
# gl_MANYWARN_COMPLEMENT(OUTVAR, LISTVAR, REMOVEVAR)
|
||||
# --------------------------------------------------
|
||||
# Copy LISTVAR to OUTVAR except for the entries in REMOVEVAR.
|
||||
# Elements separated by whitespace. In set logic terms, the function
|
||||
# does OUTVAR = LISTVAR \ REMOVEVAR.
|
||||
AC_DEFUN([gl_MANYWARN_COMPLEMENT],
|
||||
[
|
||||
gl_warn_set=
|
||||
set x $2; shift
|
||||
for gl_warn_item
|
||||
do
|
||||
case " $3 " in
|
||||
*" $gl_warn_item "*)
|
||||
;;
|
||||
*)
|
||||
gl_warn_set="$gl_warn_set $gl_warn_item"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
$1=$gl_warn_set
|
||||
])
|
||||
|
||||
# gl_MANYWARN_ALL_GCC(VARIABLE)
|
||||
# -----------------------------
|
||||
# Add all documented GCC warning parameters to variable VARIABLE.
|
||||
# Note that you need to test them using gl_WARN_ADD if you want to
|
||||
# make sure your gcc understands it.
|
||||
AC_DEFUN([gl_MANYWARN_ALL_GCC],
|
||||
[
|
||||
dnl First, check for some issues that only occur when combining multiple
|
||||
dnl gcc warning categories.
|
||||
AC_REQUIRE([AC_PROG_CC])
|
||||
if test -n "$GCC"; then
|
||||
|
||||
dnl Check if -W -Werror -Wno-missing-field-initializers is supported
|
||||
dnl with the current $CC $CFLAGS $CPPFLAGS.
|
||||
AC_MSG_CHECKING([whether -Wno-missing-field-initializers is supported])
|
||||
AC_CACHE_VAL([gl_cv_cc_nomfi_supported], [
|
||||
gl_save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS -W -Werror -Wno-missing-field-initializers"
|
||||
AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM([[]], [[]])],
|
||||
[gl_cv_cc_nomfi_supported=yes],
|
||||
[gl_cv_cc_nomfi_supported=no])
|
||||
CFLAGS="$gl_save_CFLAGS"])
|
||||
AC_MSG_RESULT([$gl_cv_cc_nomfi_supported])
|
||||
|
||||
if test "$gl_cv_cc_nomfi_supported" = yes; then
|
||||
dnl Now check whether -Wno-missing-field-initializers is needed
|
||||
dnl for the { 0, } construct.
|
||||
AC_MSG_CHECKING([whether -Wno-missing-field-initializers is needed])
|
||||
AC_CACHE_VAL([gl_cv_cc_nomfi_needed], [
|
||||
gl_save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS -W -Werror"
|
||||
AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[int f (void)
|
||||
{
|
||||
typedef struct { int a; int b; } s_t;
|
||||
s_t s1 = { 0, };
|
||||
return s1.b;
|
||||
}
|
||||
]],
|
||||
[[]])],
|
||||
[gl_cv_cc_nomfi_needed=no],
|
||||
[gl_cv_cc_nomfi_needed=yes])
|
||||
CFLAGS="$gl_save_CFLAGS"
|
||||
])
|
||||
AC_MSG_RESULT([$gl_cv_cc_nomfi_needed])
|
||||
fi
|
||||
|
||||
dnl Next, check if -Werror -Wuninitialized is useful with the
|
||||
dnl user's choice of $CFLAGS; some versions of gcc warn that it
|
||||
dnl has no effect if -O is not also used
|
||||
AC_MSG_CHECKING([whether -Wuninitialized is supported])
|
||||
AC_CACHE_VAL([gl_cv_cc_uninitialized_supported], [
|
||||
gl_save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS -Werror -Wuninitialized"
|
||||
AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM([[]], [[]])],
|
||||
[gl_cv_cc_uninitialized_supported=yes],
|
||||
[gl_cv_cc_uninitialized_supported=no])
|
||||
CFLAGS="$gl_save_CFLAGS"])
|
||||
AC_MSG_RESULT([$gl_cv_cc_uninitialized_supported])
|
||||
|
||||
fi
|
||||
|
||||
# List all gcc warning categories.
|
||||
# To compare this list to your installed GCC's, run this Bash command:
|
||||
#
|
||||
# comm -3 \
|
||||
# <(sed -n 's/^ *\(-[^ ]*\) .*/\1/p' manywarnings.m4 | sort) \
|
||||
# <(gcc --help=warnings | sed -n 's/^ \(-[^ ]*\) .*/\1/p' | sort |
|
||||
# grep -v -x -f <(
|
||||
# awk '/^[^#]/ {print $1}' ../build-aux/gcc-warning.spec))
|
||||
|
||||
gl_manywarn_set=
|
||||
for gl_manywarn_item in \
|
||||
-fno-common \
|
||||
-W \
|
||||
-Wabi \
|
||||
-Waddress \
|
||||
-Waggressive-loop-optimizations \
|
||||
-Wall \
|
||||
-Wattributes \
|
||||
-Wbad-function-cast \
|
||||
-Wbool-compare \
|
||||
-Wbuiltin-macro-redefined \
|
||||
-Wcast-align \
|
||||
-Wchar-subscripts \
|
||||
-Wchkp \
|
||||
-Wclobbered \
|
||||
-Wcomment \
|
||||
-Wcomments \
|
||||
-Wcoverage-mismatch \
|
||||
-Wcpp \
|
||||
-Wdate-time \
|
||||
-Wdeprecated \
|
||||
-Wdeprecated-declarations \
|
||||
-Wdesignated-init \
|
||||
-Wdisabled-optimization \
|
||||
-Wdiscarded-array-qualifiers \
|
||||
-Wdiscarded-qualifiers \
|
||||
-Wdiv-by-zero \
|
||||
-Wdouble-promotion \
|
||||
-Wduplicated-cond \
|
||||
-Wempty-body \
|
||||
-Wendif-labels \
|
||||
-Wenum-compare \
|
||||
-Wextra \
|
||||
-Wformat-contains-nul \
|
||||
-Wformat-extra-args \
|
||||
-Wformat-nonliteral \
|
||||
-Wformat-security \
|
||||
-Wformat-signedness \
|
||||
-Wformat-y2k \
|
||||
-Wformat-zero-length \
|
||||
-Wframe-address \
|
||||
-Wfree-nonheap-object \
|
||||
-Whsa \
|
||||
-Wignored-attributes \
|
||||
-Wignored-qualifiers \
|
||||
-Wimplicit \
|
||||
-Wimplicit-function-declaration \
|
||||
-Wimplicit-int \
|
||||
-Wincompatible-pointer-types \
|
||||
-Winit-self \
|
||||
-Winline \
|
||||
-Wint-conversion \
|
||||
-Wint-to-pointer-cast \
|
||||
-Winvalid-memory-model \
|
||||
-Winvalid-pch \
|
||||
-Wjump-misses-init \
|
||||
-Wlogical-not-parentheses \
|
||||
-Wlogical-op \
|
||||
-Wmain \
|
||||
-Wmaybe-uninitialized \
|
||||
-Wmemset-transposed-args \
|
||||
-Wmisleading-indentation \
|
||||
-Wmissing-braces \
|
||||
-Wmissing-declarations \
|
||||
-Wmissing-field-initializers \
|
||||
-Wmissing-include-dirs \
|
||||
-Wmissing-parameter-type \
|
||||
-Wmissing-prototypes \
|
||||
-Wmultichar \
|
||||
-Wnarrowing \
|
||||
-Wnested-externs \
|
||||
-Wnonnull \
|
||||
-Wnonnull-compare \
|
||||
-Wnull-dereference \
|
||||
-Wodr \
|
||||
-Wold-style-declaration \
|
||||
-Wold-style-definition \
|
||||
-Wopenmp-simd \
|
||||
-Woverflow \
|
||||
-Woverlength-strings \
|
||||
-Woverride-init \
|
||||
-Wpacked \
|
||||
-Wpacked-bitfield-compat \
|
||||
-Wparentheses \
|
||||
-Wpointer-arith \
|
||||
-Wpointer-sign \
|
||||
-Wpointer-to-int-cast \
|
||||
-Wpragmas \
|
||||
-Wreturn-local-addr \
|
||||
-Wreturn-type \
|
||||
-Wscalar-storage-order \
|
||||
-Wsequence-point \
|
||||
-Wshadow \
|
||||
-Wshift-count-negative \
|
||||
-Wshift-count-overflow \
|
||||
-Wshift-negative-value \
|
||||
-Wsizeof-array-argument \
|
||||
-Wsizeof-pointer-memaccess \
|
||||
-Wstack-protector \
|
||||
-Wstrict-aliasing \
|
||||
-Wstrict-overflow \
|
||||
-Wstrict-prototypes \
|
||||
-Wsuggest-attribute=const \
|
||||
-Wsuggest-attribute=format \
|
||||
-Wsuggest-attribute=noreturn \
|
||||
-Wsuggest-attribute=pure \
|
||||
-Wsuggest-final-methods \
|
||||
-Wsuggest-final-types \
|
||||
-Wswitch \
|
||||
-Wswitch-bool \
|
||||
-Wswitch-default \
|
||||
-Wsync-nand \
|
||||
-Wsystem-headers \
|
||||
-Wtautological-compare \
|
||||
-Wtrampolines \
|
||||
-Wtrigraphs \
|
||||
-Wtype-limits \
|
||||
-Wuninitialized \
|
||||
-Wunknown-pragmas \
|
||||
-Wunsafe-loop-optimizations \
|
||||
-Wunused \
|
||||
-Wunused-but-set-parameter \
|
||||
-Wunused-but-set-variable \
|
||||
-Wunused-function \
|
||||
-Wunused-label \
|
||||
-Wunused-local-typedefs \
|
||||
-Wunused-macros \
|
||||
-Wunused-parameter \
|
||||
-Wunused-result \
|
||||
-Wunused-value \
|
||||
-Wunused-variable \
|
||||
-Wvarargs \
|
||||
-Wvariadic-macros \
|
||||
-Wvector-operation-performance \
|
||||
-Wvla \
|
||||
-Wvolatile-register-var \
|
||||
-Wwrite-strings \
|
||||
\
|
||||
; do
|
||||
gl_manywarn_set="$gl_manywarn_set $gl_manywarn_item"
|
||||
done
|
||||
|
||||
# gcc --help=warnings outputs an unusual form for these options; list
|
||||
# them here so that the above 'comm' command doesn't report a false match.
|
||||
gl_manywarn_set="$gl_manywarn_set -Warray-bounds=2"
|
||||
gl_manywarn_set="$gl_manywarn_set -Wnormalized=nfc"
|
||||
gl_manywarn_set="$gl_manywarn_set -Wshift-overflow=2"
|
||||
gl_manywarn_set="$gl_manywarn_set -Wunused-const-variable=2"
|
||||
|
||||
# These are needed for older GCC versions.
|
||||
if test -n "$GCC"; then
|
||||
case `($CC --version) 2>/dev/null` in
|
||||
'gcc (GCC) '[[0-3]].* | \
|
||||
'gcc (GCC) '4.[[0-7]].*)
|
||||
gl_manywarn_set="$gl_manywarn_set -fdiagnostics-show-option"
|
||||
gl_manywarn_set="$gl_manywarn_set -funit-at-a-time"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# Disable specific options as needed.
|
||||
if test "$gl_cv_cc_nomfi_needed" = yes; then
|
||||
gl_manywarn_set="$gl_manywarn_set -Wno-missing-field-initializers"
|
||||
fi
|
||||
|
||||
if test "$gl_cv_cc_uninitialized_supported" = no; then
|
||||
gl_manywarn_set="$gl_manywarn_set -Wno-uninitialized"
|
||||
fi
|
||||
|
||||
$1=$gl_manywarn_set
|
||||
])
|
@ -1,143 +0,0 @@
|
||||
dnl
|
||||
dnl Enable all known GCC compiler warnings, except for those
|
||||
dnl we can't yet cope with
|
||||
dnl
|
||||
AC_DEFUN([SPICE_COMPILE_WARNINGS],[
|
||||
dnl ******************************
|
||||
dnl More compiler warnings
|
||||
dnl ******************************
|
||||
|
||||
AC_ARG_ENABLE([werror],
|
||||
AS_HELP_STRING([--enable-werror], [Use -Werror (if supported)]),
|
||||
[set_werror="$enableval"],
|
||||
[if test -d $srcdir/.git; then
|
||||
is_git_version=true
|
||||
set_werror=yes
|
||||
else
|
||||
set_werror=no
|
||||
fi])
|
||||
|
||||
# List of warnings that are not relevant / wanted
|
||||
|
||||
# Don't care about C++ compiler compat
|
||||
dontwarn="$dontwarn -Wc++-compat"
|
||||
dontwarn="$dontwarn -Wabi"
|
||||
dontwarn="$dontwarn -Wdeprecated"
|
||||
# For older gcc versions, -Wenum-compare is "C++ and Objective-C++ only"
|
||||
# For newer gcc versions, -Wenum-compare is "enabled by -Wall"
|
||||
dontwarn="$dontwarn -Wenum-compare"
|
||||
# Don't care about ancient C standard compat
|
||||
dontwarn="$dontwarn -Wtraditional"
|
||||
# Don't care about ancient C standard compat
|
||||
dontwarn="$dontwarn -Wtraditional-conversion"
|
||||
# Ignore warnings in /usr/include
|
||||
dontwarn="$dontwarn -Wsystem-headers"
|
||||
# Happy for compiler to add struct padding
|
||||
dontwarn="$dontwarn -Wpadded"
|
||||
# GCC very confused with -O2
|
||||
dontwarn="$dontwarn -Wunreachable-code"
|
||||
|
||||
|
||||
dontwarn="$dontwarn -Wconversion"
|
||||
dontwarn="$dontwarn -Wsign-conversion"
|
||||
dontwarn="$dontwarn -Wvla"
|
||||
dontwarn="$dontwarn -Wundef"
|
||||
dontwarn="$dontwarn -Wcast-qual"
|
||||
dontwarn="$dontwarn -Wlong-long"
|
||||
dontwarn="$dontwarn -Wswitch-default"
|
||||
dontwarn="$dontwarn -Wswitch-enum"
|
||||
dontwarn="$dontwarn -Wstrict-overflow"
|
||||
dontwarn="$dontwarn -Wunsafe-loop-optimizations"
|
||||
dontwarn="$dontwarn -Wformat-nonliteral"
|
||||
dontwarn="$dontwarn -Wfloat-equal"
|
||||
dontwarn="$dontwarn -Wdeclaration-after-statement"
|
||||
dontwarn="$dontwarn -Wcast-qual"
|
||||
dontwarn="$dontwarn -Wconversion"
|
||||
dontwarn="$dontwarn -Wsign-conversion"
|
||||
dontwarn="$dontwarn -Wpacked"
|
||||
dontwarn="$dontwarn -Wunused-macros"
|
||||
dontwarn="$dontwarn -Woverlength-strings"
|
||||
dontwarn="$dontwarn -Wstack-protector"
|
||||
dontwarn="$dontwarn -Winline"
|
||||
dontwarn="$dontwarn -Wbad-function-cast"
|
||||
dontwarn="$dontwarn -Wshadow"
|
||||
dontwarn="$dontwarn -Wformat-signedness"
|
||||
dontwarn="$dontwarn -Wnull-dereference"
|
||||
|
||||
# This causes an error to be detected in glib headers
|
||||
dontwarn="$dontwarn -Wshift-overflow=2"
|
||||
|
||||
# We want to enable these, but need to sort out the
|
||||
# decl mess with gtk/generated_*.c
|
||||
dontwarn="$dontwarn -Wmissing-declarations"
|
||||
|
||||
# Get all possible GCC warnings
|
||||
gl_MANYWARN_ALL_GCC([maybewarn])
|
||||
|
||||
# Remove the ones we don't want, blacklisted earlier
|
||||
gl_MANYWARN_COMPLEMENT([wantwarn], [$maybewarn], [$dontwarn])
|
||||
|
||||
# Check for $CC support of each warning
|
||||
for w in $wantwarn; do
|
||||
gl_WARN_ADD([$w])
|
||||
done
|
||||
|
||||
# GNULIB uses '-W' (aka -Wextra) which includes a bunch of stuff.
|
||||
# Unfortunately, this means you can't simply use '-Wsign-compare'
|
||||
# with gl_MANYWARN_COMPLEMENT
|
||||
# So we have -W enabled, and then have to explicitly turn off...
|
||||
gl_WARN_ADD([-Wno-sign-compare])
|
||||
gl_WARN_ADD([-Wno-unused-parameter])
|
||||
# We can't enable this due to horrible spice_usb_device_get_description
|
||||
# signature
|
||||
gl_WARN_ADD([-Wno-format-nonliteral])
|
||||
|
||||
# This should be < 1024 really. pixman_utils is the blackspot
|
||||
# preventing lower usage
|
||||
gl_WARN_ADD([-Wframe-larger-than=20460])
|
||||
|
||||
# Use improved glibc headers
|
||||
AH_VERBATIM([FORTIFY_SOURCE],
|
||||
[/* Enable compile-time and run-time bounds-checking, and some warnings. */
|
||||
#if !defined _FORTIFY_SOURCE && defined __OPTIMIZE__ && __OPTIMIZE__
|
||||
# define _FORTIFY_SOURCE 2
|
||||
#endif
|
||||
])
|
||||
|
||||
# Extra special flags
|
||||
dnl -fstack-protector stuff passes gl_WARN_ADD with gcc
|
||||
dnl on Mingw32, but fails when actually used
|
||||
case $host in
|
||||
*-*-linux*)
|
||||
dnl Fedora only uses -fstack-protector, but doesn't seem to
|
||||
dnl be great overhead in adding -fstack-protector-all instead
|
||||
dnl gl_WARN_ADD([-fstack-protector])
|
||||
gl_WARN_ADD([-fstack-protector-all])
|
||||
gl_WARN_ADD([--param=ssp-buffer-size=4])
|
||||
;;
|
||||
esac
|
||||
gl_WARN_ADD([-fexceptions])
|
||||
gl_WARN_ADD([-fasynchronous-unwind-tables])
|
||||
gl_WARN_ADD([-fdiagnostics-show-option])
|
||||
gl_WARN_ADD([-funit-at-a-time])
|
||||
|
||||
# Need -fipa-pure-const in order to make -Wsuggest-attribute=pure
|
||||
# fire even without -O.
|
||||
gl_WARN_ADD([-fipa-pure-const])
|
||||
|
||||
# We should eventually enable this, but right now there are at
|
||||
# least 75 functions triggering warnings.
|
||||
gl_WARN_ADD([-Wno-suggest-attribute=pure])
|
||||
gl_WARN_ADD([-Wno-suggest-attribute=const])
|
||||
|
||||
if test "$set_werror" = "yes"
|
||||
then
|
||||
gl_WARN_ADD([-Werror])
|
||||
fi
|
||||
WARN_CXXFLAGS=$WARN_CFLAGS
|
||||
AC_SUBST([WARN_CXXFLAGS])
|
||||
|
||||
WARN_LDFLAGS=$WARN_CFLAGS
|
||||
AC_SUBST([WARN_CFLAGS])
|
||||
AC_SUBST([WARN_LDFLAGS])
|
||||
])
|
@ -1,32 +0,0 @@
|
||||
dnl
|
||||
dnl Check for --no-copy-dt-needed-entries
|
||||
dnl
|
||||
dnl Copyright (C) 2013 Guido Günther <agx@sigxcpu.org>
|
||||
dnl
|
||||
dnl This library is free software; you can redistribute it and/or
|
||||
dnl modify it under the terms of the GNU Lesser General Public
|
||||
dnl License as published by the Free Software Foundation; either
|
||||
dnl version 2.1 of the License, or (at your option) any later version.
|
||||
dnl
|
||||
dnl This library is distributed in the hope that it will be useful,
|
||||
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
dnl Lesser General Public License for more details.
|
||||
dnl
|
||||
dnl You should have received a copy of the GNU Lesser General Public
|
||||
dnl License along with this library. If not, see
|
||||
dnl <http://www.gnu.org/licenses/>.
|
||||
dnl
|
||||
|
||||
AC_DEFUN([LIBVIRT_LINKER_NO_INDIRECT],[
|
||||
AC_MSG_CHECKING([for how to avoid indirect lib deps])
|
||||
|
||||
NO_INDIRECT_LDFLAGS=
|
||||
case `$LD --help 2>&1` in
|
||||
*"--no-copy-dt-needed-entries"*)
|
||||
NO_INDIRECT_LDFLAGS="-Wl,--no-copy-dt-needed-entries" ;;
|
||||
esac
|
||||
AC_SUBST([NO_INDIRECT_LDFLAGS])
|
||||
|
||||
AC_MSG_RESULT([$NO_INDIRECT_LDFLAGS])
|
||||
])
|
@ -1,35 +0,0 @@
|
||||
dnl
|
||||
dnl Check for -z now and -z relro linker flags
|
||||
dnl
|
||||
dnl Copyright (C) 2013 Red Hat, Inc.
|
||||
dnl
|
||||
dnl This library is free software; you can redistribute it and/or
|
||||
dnl modify it under the terms of the GNU Lesser General Public
|
||||
dnl License as published by the Free Software Foundation; either
|
||||
dnl version 2.1 of the License, or (at your option) any later version.
|
||||
dnl
|
||||
dnl This library is distributed in the hope that it will be useful,
|
||||
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
dnl Lesser General Public License for more details.
|
||||
dnl
|
||||
dnl You should have received a copy of the GNU Lesser General Public
|
||||
dnl License along with this library. If not, see
|
||||
dnl <http://www.gnu.org/licenses/>.
|
||||
dnl
|
||||
|
||||
AC_DEFUN([LIBVIRT_LINKER_RELRO],[
|
||||
AC_MSG_CHECKING([for how to force completely read-only GOT table])
|
||||
|
||||
RELRO_LDFLAGS=
|
||||
ld_help=`$LD --help 2>&1`
|
||||
case $ld_help in
|
||||
*"-z relro"*) RELRO_LDFLAGS="-Wl,-z -Wl,relro" ;;
|
||||
esac
|
||||
case $ld_help in
|
||||
*"-z now"*) RELRO_LDFLAGS="$RELRO_LDFLAGS -Wl,-z -Wl,now" ;;
|
||||
esac
|
||||
AC_SUBST([RELRO_LDFLAGS])
|
||||
|
||||
AC_MSG_RESULT([$RELRO_LDFLAGS])
|
||||
])
|
@ -1,79 +0,0 @@
|
||||
# warnings.m4 serial 11
|
||||
dnl Copyright (C) 2008-2013 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl From Simon Josefsson
|
||||
|
||||
# gl_AS_VAR_APPEND(VAR, VALUE)
|
||||
# ----------------------------
|
||||
# Provide the functionality of AS_VAR_APPEND if Autoconf does not have it.
|
||||
m4_ifdef([AS_VAR_APPEND],
|
||||
[m4_copy([AS_VAR_APPEND], [gl_AS_VAR_APPEND])],
|
||||
[m4_define([gl_AS_VAR_APPEND],
|
||||
[AS_VAR_SET([$1], [AS_VAR_GET([$1])$2])])])
|
||||
|
||||
|
||||
# gl_COMPILER_OPTION_IF(OPTION, [IF-SUPPORTED], [IF-NOT-SUPPORTED],
|
||||
# [PROGRAM = AC_LANG_PROGRAM()])
|
||||
# -----------------------------------------------------------------
|
||||
# Check if the compiler supports OPTION when compiling PROGRAM.
|
||||
#
|
||||
# FIXME: gl_Warn must be used unquoted until we can assume Autoconf
|
||||
# 2.64 or newer.
|
||||
AC_DEFUN([gl_COMPILER_OPTION_IF],
|
||||
[AS_VAR_PUSHDEF([gl_Warn], [gl_cv_warn_[]_AC_LANG_ABBREV[]_$1])dnl
|
||||
AS_VAR_PUSHDEF([gl_Flags], [_AC_LANG_PREFIX[]FLAGS])dnl
|
||||
AS_LITERAL_IF([$1],
|
||||
[m4_pushdef([gl_Positive], m4_bpatsubst([$1], [^-Wno-], [-W]))],
|
||||
[gl_positive="$1"
|
||||
case $gl_positive in
|
||||
-Wno-*) gl_positive=-W`expr "X$gl_positive" : 'X-Wno-\(.*\)'` ;;
|
||||
esac
|
||||
m4_pushdef([gl_Positive], [$gl_positive])])dnl
|
||||
AC_CACHE_CHECK([whether _AC_LANG compiler handles $1], m4_defn([gl_Warn]), [
|
||||
gl_save_compiler_FLAGS="$gl_Flags"
|
||||
gl_AS_VAR_APPEND(m4_defn([gl_Flags]),
|
||||
[" $gl_unknown_warnings_are_errors ]m4_defn([gl_Positive])["])
|
||||
AC_LINK_IFELSE([m4_default([$4], [AC_LANG_PROGRAM([])])],
|
||||
[AS_VAR_SET(gl_Warn, [yes])],
|
||||
[AS_VAR_SET(gl_Warn, [no])])
|
||||
gl_Flags="$gl_save_compiler_FLAGS"
|
||||
])
|
||||
AS_VAR_IF(gl_Warn, [yes], [$2], [$3])
|
||||
m4_popdef([gl_Positive])dnl
|
||||
AS_VAR_POPDEF([gl_Flags])dnl
|
||||
AS_VAR_POPDEF([gl_Warn])dnl
|
||||
])
|
||||
|
||||
# gl_UNKNOWN_WARNINGS_ARE_ERRORS
|
||||
# ------------------------------
|
||||
# Clang doesn't complain about unknown warning options unless one also
|
||||
# specifies -Wunknown-warning-option -Werror. Detect this.
|
||||
AC_DEFUN([gl_UNKNOWN_WARNINGS_ARE_ERRORS],
|
||||
[gl_COMPILER_OPTION_IF([-Werror -Wunknown-warning-option],
|
||||
[gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'],
|
||||
[gl_unknown_warnings_are_errors=])])
|
||||
|
||||
# gl_WARN_ADD(OPTION, [VARIABLE = WARN_CFLAGS],
|
||||
# [PROGRAM = AC_LANG_PROGRAM()])
|
||||
# ---------------------------------------------
|
||||
# Adds parameter to WARN_CFLAGS if the compiler supports it when
|
||||
# compiling PROGRAM. For example, gl_WARN_ADD([-Wparentheses]).
|
||||
#
|
||||
# If VARIABLE is a variable name, AC_SUBST it.
|
||||
AC_DEFUN([gl_WARN_ADD],
|
||||
[AC_REQUIRE([gl_UNKNOWN_WARNINGS_ARE_ERRORS])
|
||||
gl_COMPILER_OPTION_IF([$1],
|
||||
[gl_AS_VAR_APPEND(m4_if([$2], [], [[WARN_CFLAGS]], [[$2]]), [" $1"])],
|
||||
[],
|
||||
[$3])
|
||||
m4_ifval([$2],
|
||||
[AS_LITERAL_IF([$2], [AC_SUBST([$2])])],
|
||||
[AC_SUBST([WARN_CFLAGS])])dnl
|
||||
])
|
||||
|
||||
# Local Variables:
|
||||
# mode: autoconf
|
||||
# End:
|
215
spice/missing
215
spice/missing
@ -1,215 +0,0 @@
|
||||
#!/bin/sh
|
||||
# Common wrapper for a few potentially missing GNU programs.
|
||||
|
||||
scriptversion=2016-01-11.22; # UTC
|
||||
|
||||
# Copyright (C) 1996-2017 Free Software Foundation, Inc.
|
||||
# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
|
||||
|
||||
# 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
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
if test $# -eq 0; then
|
||||
echo 1>&2 "Try '$0 --help' for more information"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
case $1 in
|
||||
|
||||
--is-lightweight)
|
||||
# Used by our autoconf macros to check whether the available missing
|
||||
# script is modern enough.
|
||||
exit 0
|
||||
;;
|
||||
|
||||
--run)
|
||||
# Back-compat with the calling convention used by older automake.
|
||||
shift
|
||||
;;
|
||||
|
||||
-h|--h|--he|--hel|--help)
|
||||
echo "\
|
||||
$0 [OPTION]... PROGRAM [ARGUMENT]...
|
||||
|
||||
Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
|
||||
to PROGRAM being missing or too old.
|
||||
|
||||
Options:
|
||||
-h, --help display this help and exit
|
||||
-v, --version output version information and exit
|
||||
|
||||
Supported PROGRAM values:
|
||||
aclocal autoconf autoheader autom4te automake makeinfo
|
||||
bison yacc flex lex help2man
|
||||
|
||||
Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
|
||||
'g' are ignored when checking the name.
|
||||
|
||||
Send bug reports to <bug-automake@gnu.org>."
|
||||
exit $?
|
||||
;;
|
||||
|
||||
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
|
||||
echo "missing $scriptversion (GNU Automake)"
|
||||
exit $?
|
||||
;;
|
||||
|
||||
-*)
|
||||
echo 1>&2 "$0: unknown '$1' option"
|
||||
echo 1>&2 "Try '$0 --help' for more information"
|
||||
exit 1
|
||||
;;
|
||||
|
||||
esac
|
||||
|
||||
# Run the given program, remember its exit status.
|
||||
"$@"; st=$?
|
||||
|
||||
# If it succeeded, we are done.
|
||||
test $st -eq 0 && exit 0
|
||||
|
||||
# Also exit now if we it failed (or wasn't found), and '--version' was
|
||||
# passed; such an option is passed most likely to detect whether the
|
||||
# program is present and works.
|
||||
case $2 in --version|--help) exit $st;; esac
|
||||
|
||||
# Exit code 63 means version mismatch. This often happens when the user
|
||||
# tries to use an ancient version of a tool on a file that requires a
|
||||
# minimum version.
|
||||
if test $st -eq 63; then
|
||||
msg="probably too old"
|
||||
elif test $st -eq 127; then
|
||||
# Program was missing.
|
||||
msg="missing on your system"
|
||||
else
|
||||
# Program was found and executed, but failed. Give up.
|
||||
exit $st
|
||||
fi
|
||||
|
||||
perl_URL=http://www.perl.org/
|
||||
flex_URL=http://flex.sourceforge.net/
|
||||
gnu_software_URL=http://www.gnu.org/software
|
||||
|
||||
program_details ()
|
||||
{
|
||||
case $1 in
|
||||
aclocal|automake)
|
||||
echo "The '$1' program is part of the GNU Automake package:"
|
||||
echo "<$gnu_software_URL/automake>"
|
||||
echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
|
||||
echo "<$gnu_software_URL/autoconf>"
|
||||
echo "<$gnu_software_URL/m4/>"
|
||||
echo "<$perl_URL>"
|
||||
;;
|
||||
autoconf|autom4te|autoheader)
|
||||
echo "The '$1' program is part of the GNU Autoconf package:"
|
||||
echo "<$gnu_software_URL/autoconf/>"
|
||||
echo "It also requires GNU m4 and Perl in order to run:"
|
||||
echo "<$gnu_software_URL/m4/>"
|
||||
echo "<$perl_URL>"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
give_advice ()
|
||||
{
|
||||
# Normalize program name to check for.
|
||||
normalized_program=`echo "$1" | sed '
|
||||
s/^gnu-//; t
|
||||
s/^gnu//; t
|
||||
s/^g//; t'`
|
||||
|
||||
printf '%s\n' "'$1' is $msg."
|
||||
|
||||
configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
|
||||
case $normalized_program in
|
||||
autoconf*)
|
||||
echo "You should only need it if you modified 'configure.ac',"
|
||||
echo "or m4 files included by it."
|
||||
program_details 'autoconf'
|
||||
;;
|
||||
autoheader*)
|
||||
echo "You should only need it if you modified 'acconfig.h' or"
|
||||
echo "$configure_deps."
|
||||
program_details 'autoheader'
|
||||
;;
|
||||
automake*)
|
||||
echo "You should only need it if you modified 'Makefile.am' or"
|
||||
echo "$configure_deps."
|
||||
program_details 'automake'
|
||||
;;
|
||||
aclocal*)
|
||||
echo "You should only need it if you modified 'acinclude.m4' or"
|
||||
echo "$configure_deps."
|
||||
program_details 'aclocal'
|
||||
;;
|
||||
autom4te*)
|
||||
echo "You might have modified some maintainer files that require"
|
||||
echo "the 'autom4te' program to be rebuilt."
|
||||
program_details 'autom4te'
|
||||
;;
|
||||
bison*|yacc*)
|
||||
echo "You should only need it if you modified a '.y' file."
|
||||
echo "You may want to install the GNU Bison package:"
|
||||
echo "<$gnu_software_URL/bison/>"
|
||||
;;
|
||||
lex*|flex*)
|
||||
echo "You should only need it if you modified a '.l' file."
|
||||
echo "You may want to install the Fast Lexical Analyzer package:"
|
||||
echo "<$flex_URL>"
|
||||
;;
|
||||
help2man*)
|
||||
echo "You should only need it if you modified a dependency" \
|
||||
"of a man page."
|
||||
echo "You may want to install the GNU Help2man package:"
|
||||
echo "<$gnu_software_URL/help2man/>"
|
||||
;;
|
||||
makeinfo*)
|
||||
echo "You should only need it if you modified a '.texi' file, or"
|
||||
echo "any other file indirectly affecting the aspect of the manual."
|
||||
echo "You might want to install the Texinfo package:"
|
||||
echo "<$gnu_software_URL/texinfo/>"
|
||||
echo "The spurious makeinfo call might also be the consequence of"
|
||||
echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
|
||||
echo "want to install GNU make:"
|
||||
echo "<$gnu_software_URL/make/>"
|
||||
;;
|
||||
*)
|
||||
echo "You might have modified some files without having the proper"
|
||||
echo "tools for further handling them. Check the 'README' file, it"
|
||||
echo "often tells you about the needed prerequisites for installing"
|
||||
echo "this package. You may also peek at any GNU archive site, in"
|
||||
echo "case some other package contains this missing '$1' program."
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
give_advice "$1" | sed -e '1s/^/WARNING: /' \
|
||||
-e '2,$s/^/ /' >&2
|
||||
|
||||
# Propagate the correct exit status (expected to be 127 for a program
|
||||
# not found, 63 for a program that failed due to version mismatch).
|
||||
exit $st
|
||||
|
||||
# Local variables:
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-time-zone: "UTC0"
|
||||
# time-stamp-end: "; # UTC"
|
||||
# End:
|
@ -1,225 +0,0 @@
|
||||
NULL =
|
||||
SUBDIRS = . tests
|
||||
|
||||
check-valgrind:
|
||||
$(MAKE) -C tests check-valgrind
|
||||
|
||||
AM_CPPFLAGS = \
|
||||
-DSPICE_SERVER_INTERNAL \
|
||||
$(COMMON_CFLAGS) \
|
||||
$(GLIB2_CFLAGS) \
|
||||
$(GOBJECT2_CFLAGS) \
|
||||
$(LZ4_CFLAGS) \
|
||||
$(PIXMAN_CFLAGS) \
|
||||
$(SASL_CFLAGS) \
|
||||
$(SLIRP_CFLAGS) \
|
||||
$(SMARTCARD_CFLAGS) \
|
||||
$(GSTREAMER_0_10_CFLAGS) \
|
||||
$(GSTREAMER_1_0_CFLAGS) \
|
||||
$(SPICE_PROTOCOL_CFLAGS) \
|
||||
$(SSL_CFLAGS) \
|
||||
$(VISIBILITY_HIDDEN_CFLAGS) \
|
||||
$(WARN_CFLAGS) \
|
||||
$(ORC_CFLAGS) \
|
||||
$(NULL)
|
||||
|
||||
noinst_LTLIBRARIES = libserver.la
|
||||
lib_LTLIBRARIES = libspice-server.la
|
||||
|
||||
libspice_server_la_LDFLAGS = \
|
||||
-version-info $(SPICE_LT_VERSION) \
|
||||
-no-undefined \
|
||||
$(RELRO_LDFLAGS) \
|
||||
$(NO_INDIRECT_LDFLAGS) \
|
||||
$(NULL)
|
||||
|
||||
if HAVE_LD_VERSION_SCRIPT
|
||||
libspice_server_la_LDFLAGS += \
|
||||
-Wl,--version-script=$(srcdir)/spice-server.syms
|
||||
EXTRA_libspice_server_la_DEPENDENCIES = $(srcdir)/spice-server.syms
|
||||
endif
|
||||
|
||||
libserver_la_LIBADD = \
|
||||
$(SPICE_COMMON_DIR)/common/libspice-common.la \
|
||||
$(SPICE_COMMON_DIR)/common/libspice-common-server.la \
|
||||
$(GL_LIBS) \
|
||||
$(GLIB2_LIBS) \
|
||||
$(GOBJECT2_LIBS) \
|
||||
$(JPEG_LIBS) \
|
||||
$(LZ4_LIBS) \
|
||||
$(LIBRT) \
|
||||
$(PIXMAN_LIBS) \
|
||||
$(SASL_LIBS) \
|
||||
$(SLIRP_LIBS) \
|
||||
$(GSTREAMER_0_10_LIBS) \
|
||||
$(GSTREAMER_1_0_LIBS) \
|
||||
$(SSL_LIBS) \
|
||||
$(Z_LIBS) \
|
||||
$(SPICE_NONPKGCONFIG_LIBS) \
|
||||
$(ORC_LIBS) \
|
||||
$(NULL)
|
||||
|
||||
libspice_serverincludedir = $(includedir)/spice-server
|
||||
libspice_serverinclude_HEADERS = \
|
||||
spice-audio.h \
|
||||
spice-char.h \
|
||||
spice-core.h \
|
||||
spice-experimental.h \
|
||||
spice-input.h \
|
||||
spice-migration.h \
|
||||
spice-qxl.h \
|
||||
spice-server.h \
|
||||
spice-version.h \
|
||||
spice-replay.h \
|
||||
spice.h \
|
||||
$(NULL)
|
||||
|
||||
spice_built_sources = spice-server-enums.h spice-server-enums.c
|
||||
|
||||
libserver_la_SOURCES = \
|
||||
$(libspice_serverinclude_HEADERS) \
|
||||
$(spice_built_sources) \
|
||||
agent-msg-filter.c \
|
||||
agent-msg-filter.h \
|
||||
cache-item.h \
|
||||
char-device.c \
|
||||
char-device.h \
|
||||
common-graphics-channel.c \
|
||||
common-graphics-channel.h \
|
||||
cursor-channel.c \
|
||||
cursor-channel-client.c \
|
||||
cursor-channel-client.h \
|
||||
cursor-channel.h \
|
||||
dcc.c \
|
||||
dcc.h \
|
||||
dcc-private.h \
|
||||
dcc-send.c \
|
||||
demarshallers.h \
|
||||
dispatcher.c \
|
||||
dispatcher.h \
|
||||
display-channel.c \
|
||||
display-channel.h \
|
||||
display-channel-private.h \
|
||||
display-limits.h \
|
||||
event-loop.c \
|
||||
glib-compat.h \
|
||||
glz-encoder.c \
|
||||
glz-encoder-dict.c \
|
||||
glz-encoder-dict.h \
|
||||
glz-encoder.h \
|
||||
glz-encoder-priv.h \
|
||||
image-cache.c \
|
||||
image-cache.h \
|
||||
image-encoders.c \
|
||||
image-encoders.h \
|
||||
inputs-channel.c \
|
||||
inputs-channel-client.c \
|
||||
inputs-channel-client.h \
|
||||
inputs-channel.h \
|
||||
jpeg-encoder.c \
|
||||
jpeg-encoder.h \
|
||||
main-channel.c \
|
||||
main-channel-client.c \
|
||||
main-channel-client.h \
|
||||
main-channel.h \
|
||||
main-dispatcher.c \
|
||||
main-dispatcher.h \
|
||||
memslot.c \
|
||||
memslot.h \
|
||||
migration-protocol.h \
|
||||
mjpeg-encoder.c \
|
||||
net-utils.c \
|
||||
net-utils.h \
|
||||
pixmap-cache.c \
|
||||
pixmap-cache.h \
|
||||
red-channel.c \
|
||||
red-channel-capabilities.c \
|
||||
red-channel-capabilities.h \
|
||||
red-channel-client.c \
|
||||
red-channel-client.h \
|
||||
red-channel.h \
|
||||
red-client.c \
|
||||
red-client.h \
|
||||
red-common.h \
|
||||
red-parse-qxl.c \
|
||||
red-parse-qxl.h \
|
||||
red-pipe-item.c \
|
||||
red-pipe-item.h \
|
||||
red-qxl.c \
|
||||
red-qxl.h \
|
||||
red-record-qxl.c \
|
||||
red-record-qxl.h \
|
||||
red-replay-qxl.c \
|
||||
reds.c \
|
||||
reds.h \
|
||||
reds-private.h \
|
||||
red-stream.c \
|
||||
red-stream.h \
|
||||
red-worker.c \
|
||||
red-worker.h \
|
||||
sound.c \
|
||||
sound.h \
|
||||
spice-bitmap-utils.c \
|
||||
spice-bitmap-utils.h \
|
||||
spicevmc.c \
|
||||
stat-file.c \
|
||||
stat-file.h \
|
||||
stat.h \
|
||||
stream-channel.c \
|
||||
stream-channel.h \
|
||||
red-stream-device.c \
|
||||
red-stream-device.h \
|
||||
sw-canvas.c \
|
||||
tree.c \
|
||||
tree.h \
|
||||
utils.c \
|
||||
utils.h \
|
||||
video-encoder.h \
|
||||
video-stream.c \
|
||||
video-stream.h \
|
||||
zlib-encoder.c \
|
||||
zlib-encoder.h \
|
||||
$(NULL)
|
||||
|
||||
if HAVE_LZ4
|
||||
libserver_la_SOURCES += \
|
||||
lz4-encoder.c \
|
||||
lz4-encoder.h \
|
||||
$(NULL)
|
||||
endif
|
||||
|
||||
if HAVE_SMARTCARD
|
||||
libserver_la_SOURCES += \
|
||||
smartcard.c \
|
||||
smartcard.h \
|
||||
smartcard-channel-client.c \
|
||||
smartcard-channel-client.h \
|
||||
$(NULL)
|
||||
endif
|
||||
|
||||
if HAVE_GSTREAMER
|
||||
libserver_la_SOURCES += \
|
||||
gstreamer-encoder.c \
|
||||
$(NULL)
|
||||
endif
|
||||
|
||||
libspice_server_la_LIBADD = libserver.la
|
||||
libspice_server_la_SOURCES =
|
||||
|
||||
spice-server-enums.c: spice-server.h spice-server-enums.c.tmpl
|
||||
$(AM_V_GEN)glib-mkenums --template $(srcdir)/spice-server-enums.c.tmpl $< > $@
|
||||
|
||||
spice-server-enums.h: spice-server.h spice-server-enums.h.tmpl
|
||||
$(AM_V_GEN)glib-mkenums --template $(srcdir)/spice-server-enums.h.tmpl $< > $@
|
||||
|
||||
EXTRA_DIST = \
|
||||
spice-bitmap-utils.tmpl.c \
|
||||
cache-item.tmpl.c \
|
||||
glz-encode-match.tmpl.c \
|
||||
glz-encode.tmpl.c \
|
||||
spice-server.syms \
|
||||
spice-server-enums.h.tmpl \
|
||||
spice-server-enums.c.tmpl \
|
||||
$(NULL)
|
||||
|
||||
BUILT_SOURCES = $(spice_built_sources)
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user