diff options
Diffstat (limited to 'xorg')
-rwxr-xr-x | xorg | 400 |
1 files changed, 400 insertions, 0 deletions
@@ -0,0 +1,400 @@ +#!/bin/bash +# +# Kamil Kaminski +# revision 8 +# + +echo -e "X.Org utility script\n" + +# compiler flags +export CFLAGS="-march=native -mtune=native -O2 -fomit-frame-pointer" +export CXXFLAGS="-march=native -mtune=native -O2 -fomit-frame-pointer" + +#export CPATH="/usr/local/include" +#export ACLOCAL="aclocal -I /usr/local/share/aclocal" +#export PREFIX=/usr/local +#export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:/usr/local/share/pkgconfig" + +#export CPATH="/opt/gfx-test/include" +export ACLOCAL="aclocal -I /opt/gfx-test/share/aclocal" +export PKG_CONFIG_PATH="/opt/gfx-test/lib/pkgconfig:/opt/gfx-test/share/pkgconfig" +export PREFIX="/opt/gfx-test" +MAKE="make -j2" + +# list of repositories +REPOS="\ +git://anongit.freedesktop.org/git/mesa/cairo \ +git://anongit.freedesktop.org/git/mesa/drm \ +git://anongit.freedesktop.org/git/mesa/mesa \ +git://anongit.freedesktop.org/git/nouveau/xf86-video-nouveau \ +git://anongit.freedesktop.org/git/pixman \ +git://anongit.freedesktop.org/git/xcb/libxcb \ +git://anongit.freedesktop.org/git/xcb/proto \ +git://anongit.freedesktop.org/git/xcb/pthread-stubs \ +git://anongit.freedesktop.org/git/xkeyboard-config \ +git://anongit.freedesktop.org/git/xorg/app/xkbcomp \ +git://anongit.freedesktop.org/git/xorg/driver/xf86-input-evdev \ +git://anongit.freedesktop.org/git/xorg/driver/xf86-input-keyboard \ +git://anongit.freedesktop.org/git/xorg/driver/xf86-input-mouse \ +git://anongit.freedesktop.org/git/xorg/driver/xf86-video-fbdev \ +git://anongit.freedesktop.org/git/xorg/driver/xf86-video-intel \ +git://anongit.freedesktop.org/git/xorg/driver/xf86-video-nv \ +git://anongit.freedesktop.org/git/xorg/driver/xf86-video-vesa \ +git://anongit.freedesktop.org/git/xorg/font/misc-misc \ +git://anongit.freedesktop.org/git/xorg/lib/libX11 \ +git://anongit.freedesktop.org/git/xorg/lib/libXdamage \ +git://anongit.freedesktop.org/git/xorg/lib/libXext \ +git://anongit.freedesktop.org/git/xorg/lib/libXfixes \ +git://anongit.freedesktop.org/git/xorg/lib/libXfont \ +git://anongit.freedesktop.org/git/xorg/lib/libXinerama \ +git://anongit.freedesktop.org/git/xorg/lib/libXrandr \ +git://anongit.freedesktop.org/git/xorg/lib/libXv \ +git://anongit.freedesktop.org/git/xorg/lib/libXvMC \ +git://anongit.freedesktop.org/git/xorg/lib/libXxf86vm \ +git://anongit.freedesktop.org/git/xorg/lib/libfontenc \ +git://anongit.freedesktop.org/git/xorg/lib/libpciaccess \ +git://anongit.freedesktop.org/git/xorg/lib/libxkbfile \ +git://anongit.freedesktop.org/git/xorg/lib/libxtrans \ +git://anongit.freedesktop.org/git/xorg/proto/bigreqsproto \ +git://anongit.freedesktop.org/git/xorg/proto/compositeproto \ +git://anongit.freedesktop.org/git/xorg/proto/damageproto \ +git://anongit.freedesktop.org/git/xorg/proto/dri2proto \ +git://anongit.freedesktop.org/git/xorg/proto/evieproto \ +git://anongit.freedesktop.org/git/xorg/proto/fixesproto \ +git://anongit.freedesktop.org/git/xorg/proto/fontsproto \ +git://anongit.freedesktop.org/git/xorg/proto/glproto \ +git://anongit.freedesktop.org/git/xorg/proto/inputproto \ +git://anongit.freedesktop.org/git/xorg/proto/kbproto \ +git://anongit.freedesktop.org/git/xorg/proto/randrproto \ +git://anongit.freedesktop.org/git/xorg/proto/recordproto \ +git://anongit.freedesktop.org/git/xorg/proto/renderproto \ +git://anongit.freedesktop.org/git/xorg/proto/resourceproto \ +git://anongit.freedesktop.org/git/xorg/proto/scrnsaverproto \ +git://anongit.freedesktop.org/git/xorg/proto/videoproto \ +git://anongit.freedesktop.org/git/xorg/proto/x11proto \ +git://anongit.freedesktop.org/git/xorg/proto/xcmiscproto \ +git://anongit.freedesktop.org/git/xorg/proto/xextproto \ +git://anongit.freedesktop.org/git/xorg/proto/xf86dgaproto \ +git://anongit.freedesktop.org/git/xorg/proto/xf86driproto \ +git://anongit.freedesktop.org/git/xorg/proto/xf86vidmodeproto \ +git://anongit.freedesktop.org/git/xorg/proto/xineramaproto \ +git://anongit.freedesktop.org/git/xorg/util/macros \ +git://anongit.freedesktop.org/git/xorg/xserver \ +git://anongit.freedesktop.org/git/mesa/demos" + +# list of modules that will get compiled generically, without any extra flags +modules="\ +bigreqsproto \ +compositeproto \ +damageproto \ +dri2proto \ +evieproto \ +fixesproto \ +fontsproto \ +glproto \ +inputproto \ +kbproto \ +macros \ +proto \ +pthread-stubs \ +randrproto \ +recordproto \ +renderproto \ +resourceproto \ +scrnsaverproto \ +videoproto \ +x11proto \ +xcmiscproto \ +xextproto \ +xf86dgaproto \ +xf86driproto \ +xf86vidmodeproto \ +xineramaproto \ +libXdamage \ +libXext \ +libXfixes \ +libfontenc \ +libxtrans \ +libXfont \ +libXinerama \ +libXrandr \ +libXv \ +libXvMC \ +libXxf86vm \ +libpciaccess \ +libxcb \ +libxkbfile \ +misc-misc \ +pixman \ +xkbcomp \ +xkeyboard-config \ +libX11" + +# list of modules that may get compiled with custom flags +modules2="\ +cairo \ +drm \ +mesa \ +xf86-input-evdev \ +xf86-input-keyboard \ +xf86-input-mouse \ +xf86-video-fbdev \ +xf86-video-intel \ +xf86-video-nouveau \ +xf86-video-nv \ +xf86-video-vesa \ +xserver" + +init() +{ + for repo in $REPOS; do + REPONAME=`basename $repo` + if [ -d $REPONAME ]; then + echo -e "\e[00;32m$REPONAME\e[00m \e[00;33mis already initialized, skipping\e[00m" + else + git clone $repo + fi + done +} + +update_modules() +{ + for module in $modules2; do + REPONAME=`basename $module` + if [ ! -d $REPONAME ]; then + echo -e "\e[00;31m$REPONAME\e[00m \e[00;33mdoes not exist, skipping\e[00m" + else + cd $module + echo -n "$module: " + git pull + #git rebase master + cd .. + fi + done + + for module in $modules; do + REPONAME=`basename $module` + if [ ! -d $REPONAME ]; then + echo -e "\e[00;31m$REPONAME\e[00m \e[00;33mdoes not exist, skipping\e[00m" + else + cd $module + echo -n "$module: " + git pull + #git rebase master + cd .. + fi + done +} + +build() +{ + exec 2> >(tee ../xorg.log) + + echo -e "\e[00;32mbuilding X.Org\n\e[00m" + + if [ -d $PREFIX ]; then + echo "$PREFIX exists, removing..." + rm -rf $PREFIX + mkdir -p $PREFIX/share/aclocal + mkdir -p $PREFIX/bin + else + mkdir -p $PREFIX/share/aclocal + mkdir -p $PREFIX/bin + fi + + if [ -d pthread-stubs ]; then + cd pthread-stubs + echo "building pthread-stubs" + ./autogen.sh --prefix=$PREFIX + ($MAKE) + make install + cd .. + else + echo -e "\e[00;31mpthread-stubs has not been cloned\e[00m" + fi + + if [ -d macros ]; then + cd macros + echo "building macros" + ./autogen.sh --prefix=$PREFIX + ($MAKE) + make install + cd .. + else + echo -e "\e[00;31mmacros has not been cloned\e[00m" + fi + + for i in $modules; do + if [ -d $i ]; then + cd $i + echo ====================== + echo configuring $i + echo ====================== + ./autogen.sh --prefix=$PREFIX + echo ====================== + echo building $i + echo ====================== + if [ $? -ne 0 ]; then + echo "failed to configure $i." + exit + fi + ($MAKE) + make install + cd .. + else + echo -e "\e[00;33m$i has not been cloned\e[00m" + fi + done + + if [ -d drm ]; then + cd drm + ./autogen.sh --prefix=$PREFIX --enable-nouveau-experimental-api + ($MAKE) + make install + cd .. + else + echo -e "\e[00;33mdrm has not been cloned\e[00m" + fi + + if [ -d mesa ]; then + cd mesa + ./autogen.sh --prefix=$PREFIX --with-dri-driverdir=$PREFIX/lib/dri \ + --enable-glx-tls --enable-xcb --enable-gles2 \ + --with-dri-drivers=swrast,nouveau --enable-gallium-nouveau \ + --disable-gallium-intel --disable-gallium-radeon \ + --disable-gallium-svga #--disable-asm --enable-debug + if [ $? -ne 0 ]; then + echo "failed to configure Mesa." + exit + fi + ($MAKE) + make install + mkdir -p $PREFIX/bin + install -m755 progs/xdemos/{glxinfo,glxgears} $PREFIX/bin + cd .. + else + echo -e "\e[00;33mmesa has not been cloned\e[00m" + fi + + if [ -d xserver ]; then + cd xserver + ./autogen.sh --prefix=$PREFIX --enable-glx-tls + if [ $? -ne 0 ]; then + echo "failed to configure X server." + exit + fi + ($MAKE) + make install + chown root $PREFIX/bin/Xorg + chmod +s $PREFIX/bin/Xorg + cd .. + else + echo -e "\e[00;33mxserver has not been cloned\e[00m" + fi + + if [ -d cairo ]; then + cd cairo + ./autogen.sh --prefix=$PREFIX --enable-gl + ($MAKE) + make install + cd .. + else + echo -e "\e[00;33mcairo has not been cloned\e[00m" + fi + + if [ -d xf86-input-mouse ]; then + cd xf86-input-mouse + ./autogen.sh --prefix=$PREFIX + ($MAKE) + make install + cd .. + else + echo -e "\e[00;33mxf86-input-mouse has not been cloned\e[00m" + fi + + if [ -d xf86-input-keyboard ]; then + cd xf86-input-keyboard + ./autogen.sh --prefix=$PREFIX + ($MAKE) + make install + cd .. + else + echo -e "\e[00;33mxf86-input-keyboard has not been cloned\e[00m" + fi + + if [ -d xf86-video-nouveau ]; then + cd xf86-video-nouveau + ./autogen.sh --prefix=$PREFIX + ($MAKE) + make install + cd .. + else + echo -e "\e[00;33mxf86-video-nouveau has not been cloned\e[00m" + fi + + if [ -d xf86-video-nv ]; then + cd xf86-video-nv + ./autogen.sh --prefix=$PREFIX + ($MAKE) + make install + cd .. + else + echo -e "\e[00;33mxf86-video-nv has not been cloned\e[00m" + fi + + if [ -d xf86-video-vesa ]; then + cd xf86-video-vesa + ./autogen.sh --prefix=$PREFIX + ($MAKE) + make install + cd .. + else + echo -e "\e[00;33mxf86-video-vesa has not been cloned\e[00m" + fi + + if [ -d xf86-video-fbdev ]; then + cd xf86-video-fbdev + ./autogen.sh --prefix=$PREFIX + ($MAKE) + make install + cd .. + else + echo -e "\e[00;33mxf86-video-fbdev has not been cloned\e[00m" + fi + + if [ -d xf86-input-evdev ]; then + cd xf86-input-evdev + ./autogen.sh --prefix=$PREFIX + ($MAKE) + make install + cd .. + else + echo -e "\e[00;33mxf86-input-evdev has not been cloned\e[00m" + fi + + if [ -d xf86-video-intel ]; then + cd xf86-video-intel + ./autogen.sh --prefix=$PREFIX + ($MAKE) + make install + cd .. + else + echo -e "\e[00;33mxf86-video-intel has not been cloned\e[00m" + fi +} + +case "$1" in + init) + init + ;; + build) + build + ;; + update) + update_modules + ;; + *) + echo "usage: $0 init | build | update" + exit 3 +esac + |