blob: a783f6030ae338c60bee63330f7ced17397bb761 [file] [log] [blame]
#!/bin/bash
# -*- mode: shell-script; coding: UTF-8 -*-
#
# Build Xvnc with Xorg 7.4
#
set -e
if [ "$PREFIX" = "" ]; then
PREFIX=`pwd`/xorg.build
fi
export ACLOCAL="aclocal -I ${PREFIX}/share/aclocal"
export PKG_CONFIG_PATH="${PREFIX}/lib/pkgconfig"
MAKE="make"
STATIC=0
modules="dri2proto \
libpthread-stubs \
glproto \
xf86vidmodeproto \
xextproto \
xproto \
kbproto \
inputproto \
xcmiscproto \
bigreqsproto \
fixesproto \
damageproto \
xf86driproto \
randrproto \
renderproto \
scrnsaverproto \
resourceproto \
fontsproto \
videoproto \
compositeproto \
xineramaproto \
fontcacheproto \
libdrm \
libXau \
xtrans \
libXdmcp \
libX11 \
libXext \
libXxf86vm \
libICE \
libSM \
libXt \
libXmu \
libXfixes \
libXdamage \
libXi \
evieext \
libxkbfile \
libfontenc \
libXfont \
libpciaccess \
pixman"
init()
{
mkdir -p xorg
update_modules
pushd xorg
tar jxf ~/.tigervnc-build/util-macros.tar.bz2
pushd util-macros-*
echo "Building macros"
./configure ${1+"$@"} --prefix=${PREFIX}
($MAKE);
make install
popd
popd
pushd xserver
patch -p1 < ../xserver15.patch
popd
cd ..
if [ ! -f ./configure ]; then
autoreconf -fiv
fi
cd unix
}
update_modules()
{
pushd xorg
../download-xorg
for module in ${modules}; do
tar jxf ~/.tigervnc-build/${module}.tar.bz2
done
tar jxf ~/.tigervnc-build/Mesa.tar.bz2
tar jxf ~/.tigervnc-build/freetype.tar.bz2
tar jxf ~/.tigervnc-build/xorg-server.tar.bz2
cp -r xorg-server-1.*/* ../xserver
popd
}
build ()
{
# Build VNC
echo "*** Building VNC ***"
cd ..
make distclean || true
./configure ${1+"$@"} --prefix=${PREFIX}
make
cd unix
# Build Xorg
echo "*** Building Xorg ***"
pushd xorg
for module in ${modules}; do
extraoptions=""
cd ${module}-*
echo ======================
echo configuring ${module}
echo ======================
if [ "${module}" = "libX11" ]; then
extraoptions="${extraoptions} --without-xcb"
fi
if [ "${module}" = "libSM" ]; then
extraoptions="${extraoptions} --without-libuuid"
fi
if [ $STATIC = 1 ]; then
extraoptions="${extraoptions} --enable-static --disable-shared"
OLD_CFLAGS=${CFLAGS}
OLD_CXXFLAGS=${CXXFLAGS}
CFLAGS=${CFLAGS}' -fPIC'
CXXFLAGS=${CXXFLAGS}' -fPIC'
export CFLAGS CXXFLAGS
fi
./configure ${1+"$@"} --prefix="${PREFIX}" ${extraoptions}
if [ $STATIC = 1 ]; then
CFLAGS=${OLD_CFLAGS}
CXXFLAGS=${OLD_CXXFLAGS}
export CFLAGS CXXFLAGS
fi
echo ======================
echo building ${module}
echo ======================
if [ $? -ne 0 ]; then
echo "Failed to configure ${module}."
exit
fi
($MAKE);
make install
cd ..
done
# build mesa
echo "*** Building Mesa ***"
pushd Mesa-*
./configure ${1+"$@"} --prefix=${PREFIX} --with-driver=dri --disable-glut --without-demos
if [ $? -ne 0 ]; then
echo "Failed to configure Mesa."
exit
fi
($MAKE)
make install
popd
# build freetype
if [ $STATIC = 1 ]; then
echo "*** Building freetype ***"
pushd freetype-*
./configure ${1+"$@"} --prefix=${PREFIX} --enable-static --disable-shared
if [ $? -ne 0 ]; then
echo "Failed to configure freetype."
exit
fi
($MAKE)
make install
popd
fi
popd
# build xserver
echo "*** Building xserver ***"
cd xserver
autoreconf -fiv
XORGCFGFLAGS='--disable-xinerama --disable-xvfb --disable-xnest --disable-xorg'
if [ $STATIC = 1 ]; then
XORGCFGFLAGS="${XORGCFGFLAGS} --disable-shared --enable-static"
fi
./configure ${1+"$@"} --prefix=${PREFIX} ${XORGCFGFLAGS}
if [ $? -ne 0 ]; then
echo "Failed to configure X server."
exit
fi
($MAKE)
make install
cd ..
}
case "$1" in
init)
shift
if [ "$1" = "-static" ]; then
STATIC=1
shift
fi
init ${1+"$@"}
;;
build)
shift
if [ "$1" = "-static" ]; then
STATIC=1
shift
fi
build ${1+"$@"}
;;
update)
shift
if [ "$1" = "-static" ]; then
STATIC=1
shift
fi
update_modules
;;
*)
echo "Usage: $0 init | build | update [-static] [additional configure flags]"
exit 3
esac