diff options
Diffstat (limited to 'contrib/xorg')
-rwxr-xr-x | contrib/xorg/build-xorg | 347 | ||||
-rwxr-xr-x | contrib/xorg/download-xorg-7.5 | 85 | ||||
-rw-r--r-- | contrib/xorg/xorg-7.5-patches/0001-Add-dridir-param.patch | 131 | ||||
-rw-r--r-- | contrib/xorg/xorg-7.5-patches/0001-Add-xkbcompdir-param.patch | 46 |
4 files changed, 609 insertions, 0 deletions
diff --git a/contrib/xorg/build-xorg b/contrib/xorg/build-xorg new file mode 100755 index 00000000..a847292e --- /dev/null +++ b/contrib/xorg/build-xorg @@ -0,0 +1,347 @@ +#!/bin/bash +# -*- mode: shell-script; coding: UTF-8 -*- +# +# Build Xvnc with Xorg 7.4 or 7.5 +# + +set -e + +PREFIX= +MAKE="make" +PARALLEL_MAKE=0 +XORG_VERSION=7.5 +XONLY=0 +CFGHOST= +SRCDIR=`dirname $0`/.. + +modules="dri2proto \ + libpthread-stubs \ + glproto \ + xf86vidmodeproto \ + xextproto \ + xproto \ + kbproto \ + inputproto \ + xcmiscproto \ + bigreqsproto \ + fixesproto \ + damageproto \ + xf86driproto \ + randrproto \ + renderproto \ + scrnsaverproto \ + resourceproto \ + fontsproto \ + videoproto \ + compositeproto \ + xineramaproto \ + libdrm \ + libXau \ + xtrans \ + libXdmcp \ + libX11 \ + libXext \ + libXxf86vm \ + libICE \ + libSM \ + libXt \ + libXmu \ + libXfixes \ + libXdamage \ + libXi \ + libxkbfile \ + libfontenc \ + libXfont \ + libpciaccess \ + pixman" + +init() +{ + update_modules + + pushd xorg + tar jxf ~/.tigervnc-xorg-$XORG_VERSION/util-macros.tar.bz2 + pushd util-macros-* + echo "Building macros" + ./configure --prefix=${PREFIX} + ($MAKE install) + popd + + pushd xserver + + patch -p1 < $SRCDIR/unix/xserver18.patch + for all in `find $SRCDIR/contrib/xorg/xorg-$XORG_VERSION-patches/ -type f |grep '.*\.patch$'`; do + echo Applying $all + patch -p1 < $all + done + + popd + popd +} + + +update_modules() +{ + if [ -d xorg ]; then rm -rf xorg; fi + if [ -d xorg.build ]; then rm -rf xorg.build; fi + mkdir xorg + pushd xorg + $SRCDIR/contrib/xorg/download-xorg-$XORG_VERSION + for module in ${modules}; do + tar jxf ~/.tigervnc-xorg-$XORG_VERSION/${module}.tar.bz2 + done + + [ -r ~/.tigervnc-xorg-$XORG_VERSION/Mesa.tar.bz2 ] && \ + tar jxf ~/.tigervnc-xorg-$XORG_VERSION/Mesa.tar.bz2 + [ -r ~/.tigervnc-xorg-$XORG_VERSION/Mesa.tar.gz ] && \ + tar zxf ~/.tigervnc-xorg-$XORG_VERSION/Mesa.tar.gz + + tar jxf ~/.tigervnc-xorg-$XORG_VERSION/freetype.tar.bz2 + tar jxf ~/.tigervnc-xorg-$XORG_VERSION/xorg-server.tar.bz2 + cp -r $SRCDIR/unix/xserver xserver + cp -r xorg-server-1.*/* xserver + popd +} + + +build () +{ + if [ $XONLY -eq 0 ]; then + + # Build VNC + echo "*** Building VNC ***" + cmake -G"Unix Makefiles" ${1+"$@"} -DBUILD_STATIC=1 $SRCDIR + $MAKE + + # Build Xorg + echo "*** Building Xorg ***" + pushd xorg + + # build freetype + echo "*** Building freetype ***" + pushd freetype-* + ./configure ${CFGHOST} --prefix=${PREFIX} --enable-static --disable-shared + if [ $? -ne 0 ]; then + echo "Failed to configure freetype." + exit + fi + $MAKE install + popd + + for module in ${modules}; do + extraoptions="" + cd ${module}-* + echo ====================== + echo configuring ${module} + echo ====================== + if [ "${module}" = "libX11" ]; then + extraoptions="${extraoptions} --without-xcb --disable-specs" + fi + if [ "${module}" = "libSM" ]; then + extraoptions="${extraoptions} --without-libuuid" + fi + if [ "${module}" = "pixman" ]; then + extraoptions="${extraoptions} --disable-gtk" + fi + if [ "${module}" = "libXfont" ]; then + extraoptions="${extraoptions} --with-freetype-config=${PREFIX}/bin/freetype-config" + fi + OLD_CFLAGS=${CFLAGS} + OLD_CXXFLAGS=${CXXFLAGS} + CFLAGS=${CFLAGS}' -fPIC' + CXXFLAGS=${CXXFLAGS}' -fPIC' + export CFLAGS CXXFLAGS + ./configure ${CFGHOST} --prefix="${PREFIX}" ${extraoptions} --enable-static --disable-shared + CFLAGS=${OLD_CFLAGS} + CXXFLAGS=${OLD_CXXFLAGS} + export CFLAGS CXXFLAGS + echo ====================== + echo building ${module} + echo ====================== + if [ $? -ne 0 ]; then + echo "Failed to configure ${module}." + exit + fi + $MAKE install + cd .. + done + + # build mesa + echo "*** Building Mesa ***" + pushd Mesa-* + ./configure ${CFGHOST} --prefix=${PREFIX} --disable-driglx-direct --with-dri-drivers=swrast --with-driver=dri --disable-glut --without-demos + if [ $? -ne 0 ]; then + echo "Failed to configure Mesa." + exit + fi + $MAKE + $MAKE install + popd + + popd + + fi # XONLY + + # build xserver + echo "*** Building xserver ***" + pushd xorg/xserver + autoreconf -fiv + XORGCFGFLAGS="--disable-dri --enable-dri2 --disable-composite --disable-xinerama --disable-xvfb --disable-xnest --disable-xorg --disable-dmx --disable-xwin --disable-xephyr --disable-kdrive --disable-config-dbus --disable-config-hal --disable-config-udev --with-sha1=libgcrypt SHA1_LIB=-lcrypto --disable-shared --enable-static ${XORGCFGFLAGS}" + ./configure ${CFGHOST} --prefix=${PREFIX} ${XORGCFGFLAGS} + if [ $? -ne 0 ]; then + echo "Failed to configure X server." + exit + fi + $MAKE TIGERVNC_SRCDIR=$SRCDIR install + popd +} + +rebuild () +{ + # Build VNC + echo "*** Building VNC ***" + $MAKE ${1+"$@"} + + # build xserver + echo "*** Building xserver ***" + pushd xorg/xserver + $MAKE TIGERVNC_SRCDIR=$SRCDIR install ${1+"$@"} + popd +} + + +usage () +{ + echo "Usage: $0 init [-version <7.4 | 7.5>]" + echo + echo " $0 build [-version <7.4 | 7.5>]" + echo " [additional CMake flags]" + echo + echo " $0 rebuild [additional make options]" + echo + echo " $0 update [-version <7.4 | 7.5>]" + echo + exit 1 +} + +if [ -x '/usr/bin/getconf' -a "$PARALLEL_MAKE" = "1" ]; then + MAKE_PARALLEL=`/usr/bin/getconf _NPROCESSORS_ONLN 2>&1` + [ "$MAKE_PARALLEL" -gt 1 ] && MAKE="$MAKE -j$MAKE_PARALLEL" +fi + +while [ $# -gt 0 ] +do + case "$1" in + init) MODE=init ;; + build) MODE=build ;; + xbuild) MODE=build; XONLY=1 ;; + rebuild) MODE=rebuild ;; + update) MODE=update ;; + -parallel) PARALLEL_MAKE=1; ;; + -srcdir) SRCDIR=$2; shift ;; + *) break ;; + esac + shift +done + +pushd $SRCDIR +SRCDIR=`pwd` +echo "*** Using TigerVNC source tree at $SRCDIR ***" +popd + +if [ "`pwd`" = "$SRCDIR/unix" ]; then + cd $SRCDIR +fi + +if [ "$PREFIX" = "" ]; then + PREFIX=`pwd`/xorg.build +fi + +if [ "$MODE" = "build" ]; then + if [ ! -d ./xorg.build/syslib ]; then + mkdir -p ./xorg.build/syslib + fi + + for i in "$@"; do + case "$i" in + CC=*) CC=`echo $i | sed s/^CC=//g` ;; + CXX=*) CXX=`echo $i | sed s/^CXX=//g` ;; + CFLAGS=*) CFLAGS=`echo $i | sed s/^CFLAGS=//g` ;; + CXXFLAGS=*) CXXFLAGS=`echo $i | sed s/^CXXFLAGS=//g` ;; + LDFLAGS=*) LDFLAGS=`echo $i | sed s/^LDFLAGS=//g` ;; + esac + done + if [ "$CC" = "" ]; then + CC=gcc + fi + if [ "$CXX" = "" ]; then + CXX=g++ + fi + if [ "$CFLAGS" = "" ]; then + CFLAGS=-O3 + fi + if [ "$CXXFLAGS" = "" ]; then + CXXFLAGS=-O3 + fi + CFLAGS="$CFLAGS -fPIC" + CXXFLAGS="$CXXFLAGS -fPIC" + LDFLAGS="$LDFLAGS -static-libgcc -L`pwd`/xorg.build/syslib" + echo CC = $CC + echo CXX = $CXX + echo CFLAGS = $CFLAGS + echo CXXFLAGS = $CXXFLAGS + echo LDFLAGS = $LDFLAGS + if [[ $CFLAGS = *-m32* ]]; then + CFGHOST="--host i686-pc-linux-gnu" + fi + STATICLIBS='libcrypto.a libz.a' + for lib in $STATICLIBS; do + if [ -f ./xorg.build/syslib/$lib ]; then + rm -f ./xorg.build/syslib/$lib + fi + done + IS64BIT=`echo -e "#ifdef __x86_64__\nis64bit_yes\n#else\nis64bit_no\n#endif" | $CC $CFLAGS -E - | grep is64bit` + STATICLIBDIR= + case $IS64BIT in + is64bit_yes) + if [ -d /usr/lib64 ]; then STATICLIBDIR=lib64; + else STATICLIBDIR=lib; fi + ;; + is64bit_no) + if [ -d /usr/lib32 ]; then STATICLIBDIR=lib32; + else STATICLIBDIR=lib; fi + ;; + *) + echo "Cannot determine whether compiler output is 64-bit or 32-bit. Are you using GCC?" + exit 1 + ;; + esac + for lib in $STATICLIBS; do + if [ -f /usr/$STATICLIBDIR/$lib ]; then + ln -fs /usr/$STATICLIBDIR/$lib ./xorg.build/syslib + else + if [ -f /$STATICLIBDIR/$lib ]; then + ln -fs /$STATICLIBDIR/$lib ./xorg.build/syslib + else + DYLIB=`echo $lib | sed s/\\\.a/\\.so/g` + if [ -f /usr/$STATICLIBDIR/$DYLIB -o -f /$STATICLIBDIR/$DYLIB ]; then + echo WARNING: Cannot find suitable $lib. Xvnc will depend on $DYLIB. + fi + fi + fi + done +fi + +export ACLOCAL="aclocal -I ${PREFIX}/share/aclocal" +export PKG_CONFIG_PATH="${PREFIX}/lib/pkgconfig:${PREFIX}/share/pkgconfig" + +case "$MODE" in + init) init ;; + build) + export CFLAGS CXXFLAGS LDFLAGS + build ${1+"$@"}; + ;; + rebuild) rebuild ${1+"$@"} ;; + update) update ;; + *) usage ;; +esac diff --git a/contrib/xorg/download-xorg-7.5 b/contrib/xorg/download-xorg-7.5 new file mode 100755 index 00000000..1b802a2b --- /dev/null +++ b/contrib/xorg/download-xorg-7.5 @@ -0,0 +1,85 @@ +#!/usr/bin/env python +# -*-mode: python; coding: UTF-8 -*- + +import os +import glob + +#INDI = "http://ftp.sunet.se/pub/X11/ftp.x.org/individual" +INDI = "http://ftp.x.org/pub/individual/" +PROTO = INDI + "proto/" +LIB = INDI + "lib/" +SERVER = INDI + "xserver/" +UTIL = INDI + "util/" +DATA = INDI + "data/" +APP = INDI + "app/" + +packages = { + "damageproto": PROTO + "damageproto-1.2.0.tar.bz2", + "fixesproto": PROTO + "fixesproto-4.1.1.tar.bz2", + "resourceproto": PROTO + "resourceproto-1.1.0.tar.bz2", + "fontsproto": PROTO + "fontsproto-2.1.0.tar.bz2", + "bigreqsproto": PROTO + "bigreqsproto-1.1.0.tar.bz2", + "kbproto": PROTO + "kbproto-1.0.4.tar.bz2", + "inputproto": PROTO + "inputproto-2.0.tar.bz2", + "glproto": PROTO + "glproto-1.4.12.tar.bz2", + "xineramaproto": PROTO + "xineramaproto-1.2.tar.bz2", + "randrproto": PROTO + "randrproto-1.3.1.tar.bz2", + "scrnsaverproto": PROTO + "scrnsaverproto-1.2.0.tar.bz2", + "renderproto": PROTO + "renderproto-0.11.tar.bz2", + "xcmiscproto": PROTO + "xcmiscproto-1.2.0.tar.bz2", + "xextproto": PROTO + "xextproto-7.1.1.tar.bz2", + "xf86driproto": PROTO + "xf86driproto-2.1.0.tar.bz2", + "dri2proto": PROTO + "dri2proto-2.1.tar.bz2", + "compositeproto": PROTO + "compositeproto-0.4.1.tar.bz2", + "xf86vidmodeproto": PROTO + "xf86vidmodeproto-2.3.tar.bz2", + "videoproto": PROTO + "videoproto-2.3.0.tar.bz2", + "xproto": PROTO + "xproto-7.0.16.tar.bz2", + + "libxkbfile": LIB + "libxkbfile-1.0.6.tar.bz2", + "libXxf86vm": LIB + "libXxf86vm-1.1.0.tar.bz2", + "libXext": LIB + "libXext-1.1.2.tar.bz2", + "libfontenc": LIB + "libfontenc-1.0.5.tar.bz2", + "libXau": LIB + "libXau-1.0.6.tar.bz2", + "libXfont": LIB + "libXfont-1.4.2.tar.bz2", + "libXfixes": LIB + "libXfixes-4.0.5.tar.bz2", + "libSM": LIB + "libSM-1.1.1.tar.bz2", + "libXi": LIB + "libXi-1.3.2.tar.bz2", + "libXmu": LIB + "libXmu-1.0.5.tar.bz2", + "libX11": LIB + "libX11-1.3.5.tar.bz2", + "libXdmcp": LIB + "libXdmcp-1.0.3.tar.bz2", + "xtrans": LIB + "xtrans-1.2.5.tar.bz2", + "libXt": LIB + "libXt-1.0.8.tar.bz2", + "libpciaccess": LIB + "libpciaccess-0.12.0.tar.bz2", + "libICE": LIB + "libICE-1.0.6.tar.bz2", + "pixman": LIB + "pixman-0.19.2.tar.bz2", + "libXdamage": LIB + "libXdamage-1.1.3.tar.bz2", + + "util-macros": UTIL + "util-macros-1.10.0.tar.bz2", + "xorg-server": SERVER + "xorg-server-1.8.2.tar.bz2", + + "libdrm": "http://dri.freedesktop.org/libdrm/libdrm-2.4.21.tar.bz2", + "Mesa": "ftp://ftp.freedesktop.org/pub/mesa/beta/MesaLib-7.8.3-rc1.tar.bz2", + "libpthread-stubs": "http://xcb.freedesktop.org/dist/libpthread-stubs-0.3.tar.bz2", + "freetype": "http://downloads.sourceforge.net/freetype/freetype-2.4.2.tar.bz2", + } + + + +def main(): + dir = os.path.expanduser("~")+"/.tigervnc-xorg-7.5" + cwd = os.getcwd() + if not os.path.exists(dir): + os.mkdir(dir) + os.chdir(dir) + + for pkg in packages.keys(): + loc = packages[pkg] + if ".tar.bz2" in loc: + fname = pkg + ".tar.bz2" + else : + fname = pkg + ".tar.gz" + if not os.path.exists(fname): + assert 0 == os.spawnvp(os.P_WAIT, "wget", ["-N", "-c", "-O", fname, loc]) + + os.chdir(cwd) +main() diff --git a/contrib/xorg/xorg-7.5-patches/0001-Add-dridir-param.patch b/contrib/xorg/xorg-7.5-patches/0001-Add-dridir-param.patch new file mode 100644 index 00000000..c72078f3 --- /dev/null +++ b/contrib/xorg/xorg-7.5-patches/0001-Add-dridir-param.patch @@ -0,0 +1,131 @@ +From 0acffdd6f443198378012405e7f814f5abf278b3 Mon Sep 17 00:00:00 2001 +From: Adam Tkac <atkac@redhat.com> +Date: Wed, 15 Sep 2010 15:37:01 +0200 +Subject: [PATCH] Add -dridir parameter to specify DRI drivers directory from command line. + +Signed-off-by: Adam Tkac <atkac@redhat.com> +--- + glx/glxdri.c | 2 -- + glx/glxdri2.c | 2 -- + glx/glxdriswrast.c | 2 -- + glx/glxext.c | 27 +++++++++++++++++++++++++++ + glx/glxserver.h | 3 +++ + os/utils.c | 9 +++++++++ + 6 files changed, 39 insertions(+), 6 deletions(-) + +diff --git a/glx/glxdri.c b/glx/glxdri.c +index 5b78cec..ce29ae2 100644 +--- a/glx/glxdri.c ++++ b/glx/glxdri.c +@@ -860,8 +860,6 @@ static const __DRIextension *loader_extensions[] = { + + + +-static const char dri_driver_path[] = DRI_DRIVER_PATH; +- + static Bool + glxDRIEnterVT (int index, int flags) + { +diff --git a/glx/glxdri2.c b/glx/glxdri2.c +index 2d6090c..49265ec 100644 +--- a/glx/glxdri2.c ++++ b/glx/glxdri2.c +@@ -579,8 +579,6 @@ static const __DRIextension *loader_extensions[] = { + NULL + }; + +-static const char dri_driver_path[] = DRI_DRIVER_PATH; +- + static Bool + glxDRIEnterVT (int index, int flags) + { +diff --git a/glx/glxdriswrast.c b/glx/glxdriswrast.c +index 6a34393..37c1dce 100644 +--- a/glx/glxdriswrast.c ++++ b/glx/glxdriswrast.c +@@ -438,8 +438,6 @@ initializeExtensions(__GLXDRIscreen *screen) + } + } + +-static const char dri_driver_path[] = DRI_DRIVER_PATH; +- + static __GLXscreen * + __glXDRIscreenProbe(ScreenPtr pScreen) + { +diff --git a/glx/glxext.c b/glx/glxext.c +index 89e58b0..5e7cf23 100644 +--- a/glx/glxext.c ++++ b/glx/glxext.c +@@ -608,3 +608,30 @@ static int __glXDispatch(ClientPtr client) + + return retval; + } ++ ++char *dri_driver_path = DRI_DRIVER_PATH; ++ ++int GlxProcessArguments(int argc, char *argv[], int i) ++{ ++ if (strncmp(argv[i], "-dridir", 7) == 0) { ++ if (++i < argc) { ++#if !defined(WIN32) && !defined(__CYGWIN__) ++ if (getuid() != geteuid()) { ++ LogMessage(X_WARNING, "-dridir is not available for setuid X servers\n"); ++ return -1; ++ } else ++#endif ++ { ++ if (strlen(argv[i]) < PATH_MAX) { ++ dri_driver_path = argv[i]; ++ return 2; ++ } else { ++ LogMessage(X_ERROR, "-dridir pathname too long\n"); ++ return -1; ++ } ++ } ++ } ++ } ++ ++ return 0; ++} +diff --git a/glx/glxserver.h b/glx/glxserver.h +index 1daf977..082ff82 100644 +--- a/glx/glxserver.h ++++ b/glx/glxserver.h +@@ -251,4 +251,7 @@ extern unsigned glxMinorVersion; + + extern int __glXEventBase; + ++extern char *dri_driver_path; ++extern int GlxProcessArguments(int argc, char *argv[], int i); ++ + #endif /* !__GLX_server_h__ */ +diff --git a/os/utils.c b/os/utils.c +index 13d3b3f..ff97c86 100644 +--- a/os/utils.c ++++ b/os/utils.c +@@ -141,6 +141,7 @@ Bool noDPMSExtension = FALSE; + #ifdef GLXEXT + Bool noGlxExtension = FALSE; + Bool noGlxVisualInit = FALSE; ++extern int GlxProcessArguments(int argc, char *argv[], int i); + #endif + #ifdef SCREENSAVER + Bool noScreenSaverExtension = FALSE; +@@ -721,6 +722,14 @@ ProcessCommandLine(int argc, char *argv[]) + i+= skip-1; + else UseMsg(); + } ++#ifdef GLXEXT ++ else if ((skip = GlxProcessArguments(argc,argv,i)) != 0) { ++ if (skip > 0) ++ i += skip - 1; ++ else ++ UseMsg(); ++ } ++#endif + #ifdef RLIMIT_DATA + else if ( strcmp( argv[i], "-ld") == 0) + { +-- +1.7.3.2 + diff --git a/contrib/xorg/xorg-7.5-patches/0001-Add-xkbcompdir-param.patch b/contrib/xorg/xorg-7.5-patches/0001-Add-xkbcompdir-param.patch new file mode 100644 index 00000000..f7f358b4 --- /dev/null +++ b/contrib/xorg/xorg-7.5-patches/0001-Add-xkbcompdir-param.patch @@ -0,0 +1,46 @@ +From 5e6e99eaef3ca346c78a3e520ed58ec8b8100b41 Mon Sep 17 00:00:00 2001 +From: Adam Tkac <atkac@redhat.com> +Date: Thu, 2 Sep 2010 17:24:38 +0200 +Subject: [PATCH] Add -xkbcompdir parameter to modify "xkbcomp" path from commandline. + +Signed-off-by: Adam Tkac <atkac@redhat.com> +--- + xkb/xkbInit.c | 21 +++++++++++++++++++++ + 1 files changed, 21 insertions(+), 0 deletions(-) + +diff --git a/xkb/xkbInit.c b/xkb/xkbInit.c +index fbf8f14..29fb33e 100644 +--- a/xkb/xkbInit.c ++++ b/xkb/xkbInit.c +@@ -742,7 +742,28 @@ XkbProcessArguments(int argc,char *argv[],int i) + } + } + return j; ++ } else if (strncmp(argv[i], "-xkbcompdir", 11)==0) { ++ if (++i < argc) { ++#if !defined(WIN32) && !defined(__CYGWIN__) ++ if (getuid() != geteuid()) { ++ LogMessage(X_WARNING, "-xkbdir is not available for setuid X servers\n"); ++ return -1; ++ } else ++#endif ++ { ++ if (strlen(argv[i]) < PATH_MAX) { ++ XkbBinDirectory = argv[i]; ++ return 2; ++ } else { ++ LogMessage(X_ERROR, "-xkbcompdir pathname too long\n"); ++ return -1; ++ } ++ } ++ } else { ++ return -1; ++ } + } ++ + if ((strcmp(argv[i], "-ardelay") == 0) || + (strcmp (argv[i], "-ar1") == 0)) { /* -ardelay int */ + if (++i >= argc) UseMsg (); +-- +1.7.2.3 + |