Advertisement
Guest User

build_radeonsi.sh

a guest
Jan 16th, 2013
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.30 KB | None | 0 0
  1. #! /bin/bash
  2. # Build radeon driver for glamor and mesa with gallium3d
  3. # See http://www.x.org/wiki/radeonBuildHowTo#Stable_branch
  4.  
  5. export PREFIX="/opt/xorg"
  6.  
  7. BASEDIR=`pwd`/my_radeonsi
  8. SAVEFILES_DIR=$HOME/Downloads/git
  9. CPU_CORES=`grep -c '^processor' /proc/cpuinfo`
  10. export CONCURRENCY_LEVEL=$(( $CPU_CORES + 1 ))
  11. export MAKEFLAGS=-j$CONCURRENCY_LEVEL
  12. XSERVER=xorg-server-1.11.4
  13. XSERVER_URI=http://ftp.x.org/pub/individual/xserver/$XSERVER.tar.bz2
  14. SH="sh -vx"
  15. SH=sh
  16. DEBUGCMD="set -vx"
  17. DEBUGCMD=
  18. KERNEL_GIT=git://people.freedesktop.org/~agd5f/linux; KERNEL_REV=f06e99f02d53402530ef90117fada184b61ee7e9
  19. KERNEL_GIT=git://people.freedesktop.org/~airlied/linux; KERNEL_REV=origin/drm-next
  20. BUILD_KERNEL=true
  21. INSTALL_KERNEL=true
  22.  
  23. FRESH=true
  24. [ -f $BASEDIR/src/util/macros/config.log ] && FRESH=false
  25.  
  26. download_and_build_kernel() {
  27. echo "*** Building kernel"
  28. NEW=true
  29. [ -d linux ] && NEW=false
  30. $NEW && ( echo "*** Downloading kernel"; git clone $KERNEL_GIT )
  31. pushd linux || return
  32. git pull
  33. $NEW && git checkout -b mybranch $KERNEL_REV
  34. mkdir -p mykernel
  35. mykernel=`pwd`/mykernel
  36. echo "*** make kernel"
  37. if $NEW; then
  38. make O=$mykernel mrproper
  39. cp /boot/config-`uname -r` mykernel/.config
  40. yes "" | make O=$mykernel silentoldconfig
  41. yes "" | make O=$mykernel oldconfig
  42. fi
  43. make -j$CONCURRENCY_LEVEL O=$mykernel
  44. make -j$CONCURRENCY_LEVEL O=$mykernel modules
  45. popd
  46. }
  47.  
  48. download_and_install_module() {
  49. NAME=$1
  50. GIT_URI=$2
  51. CONFIG_OPTS=$3
  52. BRANCH=$4
  53. echo "*** Building $NAME"
  54. $FRESH && ( echo "*** Downloading $NAME"; git clone $GIT_URI )
  55. pushd $NAME || return
  56. [ ! -z "$BRANCH" ] && git checkout -b mybranch $BRANCH
  57. git pull
  58. echo "*** Building $NAME"
  59. ./autogen.sh --prefix=$PREFIX $CONFIG_OPTS
  60. $FRESH && ( echo "*** make clean in $NAME"; make clean )
  61. make -j$CONCURRENCY_LEVEL
  62. echo "*** Installing $NAME"
  63. sudo make -j1 install
  64. popd
  65. echo "*** Done with $NAME"
  66. }
  67.  
  68. download_and_install_llvm() {
  69. echo "*** Downloading llvm"
  70. $FRESH && git clone git://people.freedesktop.org/~tstellar/llvm
  71. pushd llvm || return
  72. git pull
  73. echo "*** Building llvm"
  74. ./configure --prefix=/usr/local --enable-experimental-targets=R600 --enable-optimized --cache-file=/dev/null --srcdir=.
  75. $FRESH && make clean
  76. make -j$CONCURRENCY_LEVEL
  77. sudo make -j1 install
  78. popd
  79. }
  80.  
  81. $DEBUGCMD
  82.  
  83.  
  84. mkdir -p "$BASEDIR" || exit
  85. pushd "$BASEDIR" || exit
  86.  
  87.  
  88. # Only 3.7+ has working KMS for me (4 monitors)
  89. echo "*** Installing required packages"
  90. sudo apt-get install git pbzip2 axel x11-apps
  91. 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
  92. sudo apt-get build-dep x11-apps xserver-xorg-video-ati xserver-xorg xserver-xorg-video-all xserver-xorg-core libdrm mesa libxcb1-dev
  93.  
  94.  
  95. sudo rm -rf $PREFIX
  96.  
  97. if $BUILD_KERNEL; then
  98. download_and_build_kernel
  99. if $INSTALL_KERNEL; then
  100. pushd linux
  101. mykernel=`pwd`/mykernel
  102. sudo make O=$mykernel INSTALL_MOD_STRIP=1 modules_install
  103. sudo make O=$mykernel INSTALL_MOD_STRIP=1 install
  104. popd
  105. fi
  106. fi
  107.  
  108. download_and_install_llvm
  109.  
  110. mkdir -p src || exit 1
  111. mkdir -p build || exit 1
  112.  
  113. pushd src
  114.  
  115. if $FRESH; then
  116. echo "*** Downloading build scripts"
  117. git clone git://anongit.freedesktop.org/git/xorg/util/modular util/modular
  118. ( cd util/modular; git pull)
  119. BUILD_OPT="-n --clone"
  120. echo "*** Downloading/building Xorg stack"
  121. else
  122. BUILD_OPT="-p -a -n"
  123. echo "*** Building Xorg stack"
  124. fi
  125.  
  126. if true; then
  127. $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
  128. fi
  129.  
  130. popd
  131.  
  132. # Download and build older xserver
  133. echo "*** Downloading $XSERVER"
  134. [ ! -f $SAVEFILES_DIR/$XSERVER.tar.bz2 ] && ( cd $SAVEFILES_DIR; axel -a $XSERVER_URI || exit 1 )
  135. [ $FRESH ] && pbzip2 -dc <$SAVEFILES_DIR/$XSERVER.tar.bz2 | tar xf -
  136. pushd $XSERVER
  137. echo "*** Building $XSERVER"
  138. ./autogen.sh --prefix=$PREFIX --enable-glx-tls --enable-xorg --disable-dmx --disable-xvfb --disable-xnest --disable-xwin
  139. $FRESH && make clean
  140. make -j$CONCURRENCY_LEVEL
  141. sudo make -j1 install
  142. popd
  143.  
  144. 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"
  145.  
  146. 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"
  147. 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???
  148.  
  149. download_and_install_module drm git://anongit.freedesktop.org/git/mesa/drm "--prefix=$PREFIX"
  150.  
  151. sudo ln -sfT $PREFIX/lib/libGL.so /usr/lib/libGL.so # Otherwise glamor won't build
  152. download_and_install_module glamor git://anongit.freedesktop.org/git/xorg/driver/glamor --enable-glx-tls
  153.  
  154. sudo sh -c "echo LIBGL_DRIVERS_PATH=$PREFIX/lib/dri/ >>/etc/environment"
  155. sudo sh -c "echo $PREFIX/lib >/etc/ld.so.conf.d/a-local-xorg.conf"
  156. sudo ldconfig
  157.  
  158.  
  159. sudo cp /usr/lib/xorg/protocol.txt $PREFIX/lib/xorg/protocol.txt
  160. sudo mkdir -p $PREFIX/share/X11/xorg.conf.d/
  161. sudo cp /etc/X11/xorg.conf.d/* $PREFIX/share/X11/xorg.conf.d/
  162.  
  163.  
  164. popd
  165.  
  166. sudo chown root:root $PREFIX/bin/Xorg
  167. sudo chmod +s $PREFIX/bin/Xorg
  168. sudo chmod 1777 $PREFIX/var/log
  169.  
  170. echo "If eveything built, change your X server command (e.g. ServerCmd in /etc/kde4/kdm/kdmrc) to"
  171. 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