Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #! /bin/bash
- # Build radeon driver for glamor and mesa with gallium3d
- # See http://www.x.org/wiki/radeonBuildHowTo#Stable_branch
- export PREFIX="/opt/xorg"
- BASEDIR=`pwd`/my_radeonsi
- SAVEFILES_DIR=$HOME/Downloads/git
- CPU_CORES=`grep -c '^processor' /proc/cpuinfo`
- export CONCURRENCY_LEVEL=$(( $CPU_CORES + 1 ))
- export MAKEFLAGS=-j$CONCURRENCY_LEVEL
- XSERVER=xorg-server-1.11.4
- XSERVER_URI=http://ftp.x.org/pub/individual/xserver/$XSERVER.tar.bz2
- SH="sh -vx"
- SH=sh
- DEBUGCMD="set -vx"
- DEBUGCMD=
- KERNEL_GIT=git://people.freedesktop.org/~agd5f/linux; KERNEL_REV=f06e99f02d53402530ef90117fada184b61ee7e9
- KERNEL_GIT=git://people.freedesktop.org/~airlied/linux; KERNEL_REV=origin/drm-next
- BUILD_KERNEL=true
- INSTALL_KERNEL=true
- FRESH=true
- [ -f $BASEDIR/src/util/macros/config.log ] && FRESH=false
- download_and_build_kernel() {
- echo "*** Building kernel"
- NEW=true
- [ -d linux ] && NEW=false
- $NEW && ( echo "*** Downloading kernel"; git clone $KERNEL_GIT )
- pushd linux || return
- git pull
- $NEW && git checkout -b mybranch $KERNEL_REV
- mkdir -p mykernel
- mykernel=`pwd`/mykernel
- echo "*** make kernel"
- if $NEW; then
- make O=$mykernel mrproper
- cp /boot/config-`uname -r` mykernel/.config
- yes "" | make O=$mykernel silentoldconfig
- yes "" | make O=$mykernel oldconfig
- fi
- make -j$CONCURRENCY_LEVEL O=$mykernel
- make -j$CONCURRENCY_LEVEL O=$mykernel modules
- popd
- }
- download_and_install_module() {
- NAME=$1
- GIT_URI=$2
- CONFIG_OPTS=$3
- BRANCH=$4
- echo "*** Building $NAME"
- $FRESH && ( echo "*** Downloading $NAME"; git clone $GIT_URI )
- pushd $NAME || return
- [ ! -z "$BRANCH" ] && git checkout -b mybranch $BRANCH
- git pull
- echo "*** Building $NAME"
- ./autogen.sh --prefix=$PREFIX $CONFIG_OPTS
- $FRESH && ( echo "*** make clean in $NAME"; make clean )
- make -j$CONCURRENCY_LEVEL
- echo "*** Installing $NAME"
- sudo make -j1 install
- popd
- echo "*** Done with $NAME"
- }
- download_and_install_llvm() {
- echo "*** Downloading llvm"
- $FRESH && git clone git://people.freedesktop.org/~tstellar/llvm
- pushd llvm || return
- git pull
- echo "*** Building llvm"
- ./configure --prefix=/usr/local --enable-experimental-targets=R600 --enable-optimized --cache-file=/dev/null --srcdir=.
- $FRESH && make clean
- make -j$CONCURRENCY_LEVEL
- sudo make -j1 install
- popd
- }
- $DEBUGCMD
- mkdir -p "$BASEDIR" || exit
- pushd "$BASEDIR" || exit
- # Only 3.7+ has working KMS for me (4 monitors)
- echo "*** Installing required packages"
- sudo apt-get install git pbzip2 axel x11-apps
- sudo apt-get install -t experimental libdrm-dev libdrm2 libkms1 libdrm-intel1 libdrm-radeon1 linux-kbuild-3.7 linux-image-3.7-trunk-amd64 inux-support-3.7-trunk linux-source-3.7 linux-headers-3.7 linux-headers-3.7-trunk-common linux-headers-3.7-trunk-all x11proto-gl-dev x11proto-randr-dev libxcb-shm0-dev libxcb-util0-dev libxcb-util0 libfs-dev libxcb-randr0 libxcb-randr0-dev libxft-dev libxcursor-dev libxrandr-dev libxxf86dga-dev
- sudo apt-get build-dep x11-apps xserver-xorg-video-ati xserver-xorg xserver-xorg-video-all xserver-xorg-core libdrm mesa libxcb1-dev
- sudo rm -rf $PREFIX
- if $BUILD_KERNEL; then
- download_and_build_kernel
- if $INSTALL_KERNEL; then
- pushd linux
- mykernel=`pwd`/mykernel
- sudo make O=$mykernel INSTALL_MOD_STRIP=1 modules_install
- sudo make O=$mykernel INSTALL_MOD_STRIP=1 install
- popd
- fi
- fi
- download_and_install_llvm
- mkdir -p src || exit 1
- mkdir -p build || exit 1
- pushd src
- if $FRESH; then
- echo "*** Downloading build scripts"
- git clone git://anongit.freedesktop.org/git/xorg/util/modular util/modular
- ( cd util/modular; git pull)
- BUILD_OPT="-n --clone"
- echo "*** Downloading/building Xorg stack"
- else
- BUILD_OPT="-p -a -n"
- echo "*** Building Xorg stack"
- fi
- if true; then
- $SH util/modular/build.sh $BUILD_OPT -s sudo -n --confflags "--prefix=$PREFIX --enable-gallium-radeon --with-state-trackers=dri,glx --with-dri-driverdir=$PREFIX/lib/dri --with-egl-platforms=x11,drm --with-gallium-drivers=swrast,radeonsi --enable-gbm --enable-shared-glapi --enable-glx-tls --with-dri-drivers=radeon --enable-glamor" $BASEDIR/build
- fi
- popd
- # Download and build older xserver
- echo "*** Downloading $XSERVER"
- [ ! -f $SAVEFILES_DIR/$XSERVER.tar.bz2 ] && ( cd $SAVEFILES_DIR; axel -a $XSERVER_URI || exit 1 )
- [ $FRESH ] && pbzip2 -dc <$SAVEFILES_DIR/$XSERVER.tar.bz2 | tar xf -
- pushd $XSERVER
- echo "*** Building $XSERVER"
- ./autogen.sh --prefix=$PREFIX --enable-glx-tls --enable-xorg --disable-dmx --disable-xvfb --disable-xnest --disable-xwin
- $FRESH && make clean
- make -j$CONCURRENCY_LEVEL
- sudo make -j1 install
- popd
- download_and_install_module driver/xf86-video-ati git://anongit.freedesktop.org/git/xorg/driver/xf86-video-ati "--prefix=$PREFIX --enable-gallium-radeon --with-egl-platforms=x11,drm --enable-glamor"
- download_and_install_module mesa git://anongit.freedesktop.org/mesa/mesa "--prefix=$PREFIX --with-dri-driverdir=$PREFIX/lib/dri --with-egl-platforms=x11,drm --with-gallium-drivers=swrast,r300,r600,radeonsi --enable-gbm --enable-shared-glapi --enable-glx-tls --with-dri-drivers=radeon"
- sudo ln -sfT $PREFIX/lib/dri/radeonsi_dri.so /usr/local/lib/dri/radeonsi_dri.so # Otherwise AIGLX won't find it - doesn't consider the module search path???
- download_and_install_module drm git://anongit.freedesktop.org/git/mesa/drm "--prefix=$PREFIX"
- sudo ln -sfT $PREFIX/lib/libGL.so /usr/lib/libGL.so # Otherwise glamor won't build
- download_and_install_module glamor git://anongit.freedesktop.org/git/xorg/driver/glamor --enable-glx-tls
- sudo sh -c "echo LIBGL_DRIVERS_PATH=$PREFIX/lib/dri/ >>/etc/environment"
- sudo sh -c "echo $PREFIX/lib >/etc/ld.so.conf.d/a-local-xorg.conf"
- sudo ldconfig
- sudo cp /usr/lib/xorg/protocol.txt $PREFIX/lib/xorg/protocol.txt
- sudo mkdir -p $PREFIX/share/X11/xorg.conf.d/
- sudo cp /etc/X11/xorg.conf.d/* $PREFIX/share/X11/xorg.conf.d/
- popd
- sudo chown root:root $PREFIX/bin/Xorg
- sudo chmod +s $PREFIX/bin/Xorg
- sudo chmod 1777 $PREFIX/var/log
- echo "If eveything built, change your X server command (e.g. ServerCmd in /etc/kde4/kdm/kdmrc) to"
- echo "$PREFIX/bin/X -verbose 9 -logverbose 9 -configdir $PREFIX/share/X11/xorg.conf.d"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement