#!/bin/sh # Dolphin Build Script # By Rob Vz, modified by Callum Dickinson # FUNCTIONS apt_dependencies() # Ubuntu/Debian/Linux Mint/many others { sudo apt-get -y install cmake subversion g++ wx2.8-headers libwxbase2.8-dev libwxgtk2.8-dev libgtk2.0-dev libsdl1.2-dev nvidia-cg-toolkit libxrandr-dev libxext-dev libglew1.5-dev libao-dev libasound2-dev libpulse-dev libbluetooth-dev libreadline5-dev libavcodec-dev libavformat-dev libswscale-dev } yum_dependencies() # Fedora/Red Hat/CentOS/many others { su -c 'yum -y install cmake subversion gcc-c++ wxGTK-devel wxBase wxGTK SDL-devel SDL Cg libXxf86vm libXxf86vm-devel libXext libXext-devel glew glew-devel cairo cairo-devel libao libao-devel bluez-devel bluez-libs-devel bluez-libs bluez' } zypper_dependencies() # openSUSE, and other distros relying on ZYpp for their RPM packaging { sudo zypper -y install bluez-devel cmake subversion wxWidgets-devel wxGTK wxGTK-devel wxGTK-gl libSDL-devel libCg libCg-devel xorg-x11-libXext-devel xorg-x11-libX11-devel libao libao-devel gcc gcc-c++ readline5-devel readline5 cairo cairo-devel GLEW GLEW-devel } uwhich() # shell script-based which program from Ubuntu. Thanks! RPM-based distros usually don't have this. { if test -n "$KSH_VERSION"; then puts() { print -r -- "$@" } else puts() { printf '%s\n' "$@" } fi ALLMATCHES=0 while getopts a whichopts do case "$whichopts" in a) ALLMATCHES=1 ;; ?) puts "Usage: $0 [-a] args"; ALLRET=2 ;; esac done shift $(($OPTIND - 1)) # Shell-based libm math requirement poo if [ "$#" -eq 0 ]; then ALLRET=1 else ALLRET=0 fi case $PATH in (*[!:]:) PATH="$PATH:" ;; esac for PROGRAM in "$@"; do RET=1 IFS_SAVE="$IFS" IFS=: case $PROGRAM in */*) if [ -f "$PROGRAM" ] && [ -x "$PROGRAM" ]; then puts "$PROGRAM" RET=0 fi ;; *) for ELEMENT in $PATH; do [ -z "$ELEMENT" ] && ELEMENT=. if [ -f "$ELEMENT/$PROGRAM" ] && [ -x "$ELEMENT/$PROGRAM" ]; then puts "$ELEMENT/$PROGRAM" RET=0 [ "$ALLMATCHES" -eq 1 ] || break fi done ;; esac IFS="$IFS_SAVE" [ "$RET" -ne 0 ] && ALLRET=1 done export ALLRET } # VARIABLES folder="$HOME/dolphin-emu-read-only" localrev="`svnversion $folder`" remoterev="`svn info http://dolphin-emu.googlecode.com/svn/trunk/ | grep '^Revision:' | awk '{print$2}'`" pkgmanager="`uwhich apt-get || uwhich yum || uwhich zypper`" # Start process if [ -d $folder ]; then echo "Your Current Revision is: $localrev" [ "$localrev" != "$remoterev" ] && echo -n "Would you like to update your Dolphin installation? (y/n) " || echo -n "Local revision is the same as the remote! Rebuild your Dolphin install? (y/n) " read des case "$des" in y|ye|yes) freshinst="1";; esac else echo "You haven't downloaded dolphin yet! No worries!" freshinst="1" fi if [ "$freshinst" = "1" ]; then echo "Detecting package manager and downloading dependencies..." case "$pkgmanager" in *apt-get*) apt_dependencies;; *yum*) yum_dependencies;; *zypper*) zypper_dependencies;; esac if [ "$localrev" != "$remoterev" ]; then echo "Revision $remoterev, coming right up!" svn co http://dolphin-emu.googlecode.com/svn/trunk $folder fi echo "Going into Dolphin Directory..." cd $folder echo "Configuring Using cmake..." mkdir -p Build && cd Build cmake .. echo "Building!" make echo "Installing!" [ "`echo $pkgmanager | grep yum`" ] && su -c 'make install' || sudo make install echo "All done!" fi