Initial commit
This commit is contained in:
347
contrib/xorg/build-xorg
Executable file
347
contrib/xorg/build-xorg
Executable file
@@ -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
|
||||
120
contrib/xorg/download-xorg-7.5
Executable file
120
contrib/xorg/download-xorg-7.5
Executable file
@@ -0,0 +1,120 @@
|
||||
#!/usr/bin/env python
|
||||
# -*-mode: python; coding: utf-8 -*-
|
||||
|
||||
import os
|
||||
import glob
|
||||
import sys
|
||||
import urllib2
|
||||
|
||||
#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",
|
||||
}
|
||||
|
||||
# Python-based replacement for wget, which allows us to catch exceptions
|
||||
def webget(url, file_name):
|
||||
file_name = "%s/%s" % (os.getcwd(), file_name)
|
||||
print "Downloading: %s" % (url)
|
||||
try:
|
||||
u = urllib2.urlopen(url)
|
||||
except urllib2.URLError:
|
||||
print sys.exc_info()[0]
|
||||
sys.exit("ERROR: Unable to open URL: %s" % url)
|
||||
try:
|
||||
f = open(file_name, 'wb')
|
||||
except IOError:
|
||||
sys.exit("ERROR: Unable to save to: %s" % file_name)
|
||||
else:
|
||||
meta = u.info()
|
||||
file_size = int(meta.getheaders("Content-Length")[0])
|
||||
print " Saving as: %s Bytes: %s" % (file_name, file_size)
|
||||
|
||||
file_size_dl = 0
|
||||
block_sz = 4096
|
||||
while True:
|
||||
buffer = u.read(block_sz)
|
||||
if not buffer:
|
||||
break
|
||||
|
||||
file_size_dl += len(buffer)
|
||||
f.write(buffer)
|
||||
status = r" Progress: %7d [%3.2f%%]" % (file_size_dl, file_size_dl * 100. / file_size)
|
||||
status = status + chr(8)*(len(status)+1)
|
||||
print status,
|
||||
|
||||
f.close()
|
||||
print status
|
||||
|
||||
|
||||
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):
|
||||
webget(loc, fname)
|
||||
|
||||
os.chdir(cwd)
|
||||
main()
|
||||
131
contrib/xorg/xorg-7.5-patches/0001-Add-dridir-param.patch
Normal file
131
contrib/xorg/xorg-7.5-patches/0001-Add-dridir-param.patch
Normal file
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user