#!/bin/bash # hbased on ttp://wayland.freedesktop.org/building.html WLD=/opt/wayland LD_LIBRARY_PATH=$WLD/lib PKG_CONFIG_PATH=$WLD/lib/pkgconfig/:$WLD/share/pkgconfig/ ACLOCAL="aclocal -I $WLD/share/aclocal" C_INCLUDE_PATH=$WLD/include LIBRARY_PATH=$WLD/lib PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 export WLD LD_LIBRARY_PATH PKG_CONFIG_PATH ACLOCAL C_INCLUDE_PATH LIBRARY_PATH PKG_CONFIG_ALLOW_SYSTEM_CFLAGS BUILD_DIR=${BUILD_DIR:-~/usr/git/wayland} FORCE_AUTOGEN=0 for arg in $@; do if [ "$arg" = "-f" ]; then FORCE_AUTOGEN=1; fi; done [ ! -d "$WLD/share/aclocal" ] && sudo mkdir -p "$WLD/share/aclocal" RESET="\033[0m" RED="\033[0;31m" GREEN="\033[0;32m" function say () { echo -e "$GREEN$1$RESET"; } function error () { echo -e "${RED}FAILURE${RESET}" && exit 1; } function build () { say " * make" && make && say " * install" && sudo -E make install } function autogen () { say " * autogen --prefix=$WLD $my_configure_opts" && ./autogen.sh --prefix=$WLD $my_configure_opts && build } function update () { SHA_PREV=$(git log --pretty="format:%H" HEAD~1..) say " * pull" && git pull || return 1 SHA_HEAD=$(git log --pretty="format:%H" HEAD~1..) if [ $FORCE_AUTOGEN -eq 1 ]; then autogen else [ "$SHA_PREV" = "$SHA_HEAD" ] && return 0 build fi } function do_your_job () { if [ -d "$my_dir" ]; then cd "$my_dir" && update && cd .. || error else say " * clone $my_src" && git clone "$my_src" "$my_dir" && cd "$my_dir" && autogen && cd .. || error fi say " * SUCCESS\n" } cd $BUILD_DIR || exit 1 # WAYLAND say "wayland" my_dir=wayland my_src=git://anongit.freedesktop.org/wayland/wayland my_configure_opts= do_your_job # XCB [ ! -d xcb ] && mkdir xcb cd xcb say "cxb:pthread-stubs" my_dir=pthread-stubs my_src=git://anongit.freedesktop.org/xcb/pthread-stubs my_configure_opts= do_your_job cd .. # MESA [ ! -d mesa ] && mkdir mesa cd mesa say "mesa:drm" my_dir=drm my_src=git://anongit.freedesktop.org/git/mesa/drm my_configure_opts="--enable-nouveau-experimental-api" do_your_job say "mesa:macros" my_dir=macros my_src=git://anongit.freedesktop.org/git/xorg/util/macros my_configure_opts= do_your_job say "mesa:glproto" my_dir=glproto my_src=git://anongit.freedesktop.org/xorg/proto/glproto my_configure_opts= do_your_job say "mesa:dri2proto" my_dir=dri2proto my_src=git://anongit.freedesktop.org/xorg/proto/dri2proto my_configure_opts= do_your_job say "mesa:mesa" my_dir=mesa my_src=git://anongit.freedesktop.org/mesa/mesa my_configure_opts="--enable-gles2 --disable-gallium-egl --with-egl-platforms=x11,wayland,drm --enable-gbm --enable-shared-glapi" do_your_job cd .. # XORG [ ! -d xorg ] && mkdir xorg cd xorg say "xorg:macros" my_dir=macros my_src=git://anongit.freedesktop.org/xorg/util/macros my_configure_opts= do_your_job say "xorg:xproto" my_dir=xproto my_src=git://anongit.freedesktop.org/xorg/proto/xproto my_configure_opts= do_your_job say "xorg:kbproto" my_dir=kbproto my_src=git://anongit.freedesktop.org/xorg/proto/kbproto my_configure_opts= do_your_job say "xorg:libX11" my_dir=libX11 my_src=git://anongit.freedesktop.org/xorg/lib/libX11 my_configure_opts="--enable-specs=false" do_your_job say "xorg:libxkbcommon" my_dir=libxkbcommon my_src=git://people.freedesktop.org/xorg/lib/libxkbcommon.git my_configure_opts="--with-xkb-config-root=/usr/share/X11/xkb --enable-specs=false" do_your_job say "xorg:pixman" my_dir=pixman my_src=git://anongit.freedesktop.org/pixman my_configure_opts= do_your_job say "xorg:cairo" my_dir=cairo my_src=git://anongit.freedesktop.org/cairo my_configure_opts="--enable-gl --enable-xcb" do_your_job cd .. # WAYLAND-DEMOS say "wayland-demos" my_dir=wayland-demos my_src=git://anongit.freedesktop.org/wayland/wayland-demos my_configure_opts= do_your_job say "DONE"