[PATCH modular] renamed: build.sh -> xorg-build
Trevor Woerner
twoerner at gmail.com
Tue Jan 24 13:58:11 PST 2012
From: Trevor Woerner <twoerner at gmail.com>
Signed-off-by: Trevor Woerner <twoerner at gmail.com>
---
build.sh | 1360 ------------------------------------------------------------
xorg-build | 1360 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 1360 insertions(+), 1360 deletions(-)
delete mode 100755 build.sh
create mode 100755 xorg-build
diff --git a/build.sh b/build.sh
deleted file mode 100755
index 94202c2..0000000
--- a/build.sh
+++ /dev/null
@@ -1,1360 +0,0 @@
-#!/bin/sh
-#
-# Note on portability:
-# This script is intended to run on any platform supported by X.Org.
-# The Autoconf generated configure script is a good reference as to what is permitted.
-# Basically, it should be able to run in a Bourne shell.
-
-envoptions() {
-cat << EOF
-Environment variables specific to build.sh:
- PREFIX Install architecture-independent files in PREFIX [/usr/local]
- Each module/components is invoked with --prefix
- EPREFIX Install architecture-dependent files in EPREFIX [PREFIX]
- Each module/components is invoked with --exec-prefix
- BINDIR Install user executables [EPREFIX/bin]
- Each module/components is invoked with --bindir
- DATAROOTDIR Install read-only arch-independent data root [PREFIX/share]
- Each module/components is invoked with --datarootdir
- DATADIR Install read-only architecture-independent data [DATAROOTDIR]
- Each module/components is invoked with --datadir
- LIBDIR Install object code libraries [EPREFIX/lib]
- Each module/components is invoked with --libdir
- LOCALSTATEDIR Modifiable single-machine data [PREFIX/var]
- Each module/components is invoked with --localstatedir
- QUIET Do not print messages saying which checks are being made
- Each module/components is invoked with --quite
- GITROOT Source code repository path [git://anongit.freedesktop.org/git]
- Optional when using --clone to update source code before building
- CONFFLAGS Configure options to pass to all Autoconf configure scripts
- Refer to 'configure --help' from any module/components
-
-Environment variables defined by the GNU Build System:
- ACLOCAL The aclocal cmd name [aclocal -I \${DESTDIR}/\${DATADIR}/aclocal]
- DESTDIR Path to the staging area where installed objects are relocated
- MAKE The name of the make command [make]
- MAKEFLAGS: Options to pass to all \$(MAKE) invocations
- CC C compiler command
- CFLAGS C compiler flags
- LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
- nonstandard directory <lib dir>
- CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
- you have headers in a nonstandard directory <include dir>
- CPP C preprocessor
-
-Environment variables defined by the shell:
- PATH List of directories that the shell searches for commands
- \$DESTDIR/\$BINDIR is prepended
-
-Environment variables defined by the dynamic linker:
- LD_LIBRARY_PATH List directories that the linker searches for shared objects
- \$DESTDIR/\$LIBDIR is prepended
-
-Environment variables defined by the pkg-config system:
- PKG_CONFIG_PATH List directories that pkg-config searches for libraries
- \$DESTDIR/\$DATADIR/pkgconfig and
- \$DESTDIR/\$LIBDIR/pkgconfig are prepended
-EOF
-}
-
-setup_buildenv() {
-
- # Remember if the user had supplied a value through env var or cmd line
- # A value from cmd line takes precedence of the shell environment
- PREFIX_USER=${PREFIX:+yes}
- EPREFIX_USER=${EPREFIX:+yes}
- BINDIR_USER=${BINDIR:+yes}
- DATAROOTDIR_USER=${DATAROOTDIR:+yes}
- DATADIR_USER=${DATADIR:+yes}
- LIBDIR_USER=${LIBDIR:+yes}
- LOCALSTATEDIR_USER=${LOCALSTATEDIR:+yes}
-
- # Assign a default value if no value was supplied by the user
- PREFIX=${PREFIX:-/usr/local}
- EPREFIX=${EPREFIX:-$PREFIX}
- BINDIR=${BINDIR:-$EPREFIX/bin}
- DATAROOTDIR=${DATAROOTDIR:-$PREFIX/share}
- DATADIR=${DATADIR:-$DATAROOTDIR}
- LIBDIR=${LIBDIR:-$EPREFIX/lib}
- LOCALSTATEDIR=${LOCALSTATEDIR:-$PREFIX/var}
-
- # Support previous usage of LIBDIR which was a subdir relative to PREFIX
- # We use EPREFIX as this is what PREFIX really meant at the time
- if [ X"$LIBDIR" != X ]; then
- if [ X"`expr $LIBDIR : "\(.\)"`" != X/ ]; then
- echo ""
- echo "Warning: this usage of \$LIBDIR is deprecated. Use a full path name."
- echo "The supplied value \"$LIBDIR\" has been replaced with $EPREFIX/$LIBDIR."
- echo ""
- LIBDIR=$EPREFIX/$LIBDIR
- fi
- fi
-
- # All directories variables must be full path names
- check_full_path $PREFIX PREFIX
- check_full_path $EPREFIX EPREFIX
- check_full_path $BINDIR BINDIR
- check_full_path $DATAROOTDIR DATAROOTDIR
- check_full_path $DATADIR DATADIR
- check_full_path $LIBDIR LIBDIR
- check_full_path $LOCALSTATEDIR LOCALSTATEDIR
-
- # This will catch the case where user forgets to set PREFIX
- # and does not have write permission in the /usr/local default location
- check_writable_dir ${DESTDIR}${PREFIX} PREFIX
-
- # Must create local aclocal dir or aclocal fails
- ACLOCAL_LOCALDIR="${DESTDIR}${DATADIR}/aclocal"
- $SUDO mkdir -p ${ACLOCAL_LOCALDIR}
-
- # The following is required to make aclocal find our .m4 macros
- ACLOCAL=${ACLOCAL:="aclocal"}
- ACLOCAL="${ACLOCAL} -I ${ACLOCAL_LOCALDIR}"
- export ACLOCAL
-
- # The following is required to make pkg-config find our .pc metadata files
- PKG_CONFIG_PATH=${DESTDIR}${DATADIR}/pkgconfig:${DESTDIR}${LIBDIR}/pkgconfig${PKG_CONFIG_PATH+:$PKG_CONFIG_PATH}
- export PKG_CONFIG_PATH
-
- # Set the library path so that locally built libs will be found by apps
- LD_LIBRARY_PATH=${DESTDIR}${LIBDIR}${LD_LIBRARY_PATH+:$LD_LIBRARY_PATH}
- export LD_LIBRARY_PATH
-
- # Set the path so that locally built apps will be found and used
- PATH=${DESTDIR}${BINDIR}${PATH+:$PATH}
- export PATH
-
- # Choose which make program to use
- MAKE=${MAKE:="make"}
-
- # Create the log file directory
- $SUDO mkdir -p ${DESTDIR}${LOCALSTATEDIR}/log
-}
-
-# explain where a failure occurred
-# if you find this message in the build output it can help tell you where the failure occurred
-# arguments:
-# $1 - which command failed
-# $2/$3 - which module/component failed
-# returns:
-# (irrelevant)
-failed() {
- cmd=$1
- module=$2
- component=$3
- echo "build.sh: \"$cmd\" failed on $module/$component"
- failed_components="$failed_components $module/$component"
-}
-
-# print a pretty title to separate the processing of each module
-# arguments:
-# $1 - module
-# $2 - component
-# $3 - configuration options
-# returns:
-# (irrelevant)
-module_title() {
- module=$1
- component=$2
- confopts="$3"
- # preconds
- if [ X"$module" = X ]; then
- return
- fi
-
- echo ""
- echo "======================================================================"
- echo "== Processing module/component: \"$module/$component\""
- echo "== configuration options: $CONFFLAGS $confopts"
-}
-
-checkfortars() {
- module=$1
- component=$2
- case $module in
- "data")
- case $component in
- "cursors") component="xcursor-themes" ;;
- "bitmaps") component="xbitmaps" ;;
- esac
- ;;
- "font")
- if [ X"$component" != X"encodings" ]; then
- component="font-$component"
- fi
- ;;
- "lib")
- case $component in
- "libXRes") component="libXres" ;;
- "libxtrans") component="xtrans" ;;
- esac
- ;;
- "pixman")
- module="lib"
- component="pixman"
- ;;
- "proto")
- case $component in
- "x11proto") component="xproto" ;;
- esac
- ;;
- "util")
- case $component in
- "cf") component="xorg-cf-files" ;;
- "macros") component="util-macros" ;;
- esac
- ;;
- "xcb")
- case $component in
- "proto")
- module="xcb/proto"
- component="xcb-proto"
- ;;
- "pthread-stubs")
- module="xcb/pthread-stubs"
- component="libpthread-stubs"
- ;;
- "libxcb")
- module="xcb/libxcb"
- component="libxcb"
- ;;
- util*)
- module="xcb/$component"
- component="xcb-$component"
- ;;
- esac
- ;;
- "mesa")
- case $component in
- "drm")
- module="mesa/drm"
- component="libdrm"
- ;;
- "mesa")
- module="mesa/mesa"
- component="MesaLib"
- ;;
- esac
- ;;
- "xkeyboard-config")
- component="xkeyboard-config"
- ;;
- "xserver")
- component="xorg-server"
- ;;
- esac
- for ii in $module .; do
- for jj in bz2 gz; do
- TARFILE=`ls -1rt $ii/$component-*.tar.$jj 2> /dev/null | tail -n 1`
- if [ X"$TARFILE" != X ]; then
- SRCDIR=`echo $TARFILE | sed "s,.tar.$jj,,"`
- SRCDIR=`echo $SRCDIR | sed "s,MesaLib,Mesa,"`
- if [ ! -d $SRCDIR ]; then
- TAROPTS=xjf
- if [ X"$jj" = X"gz" ]; then
- TAROPTS=xzf
- fi
- tar $TAROPTS $TARFILE -C $ii
- if [ $? -ne 0 ]; then
- failed tar $module $component
- return 1
- fi
- fi
- return 0
- fi
- done
- done
-
- return 0
-}
-
-# perform a clone of a git repository
-# this function provides the mapping between module/component names
-# and their location in the fd.o repository
-# arguments:
-# $1 - module
-# $2 - component (optional)
-# returns:
-# 0 - good
-# 1 - bad
-clone() {
- module=$1
- component=$2
- # preconds
- if [ X"$module" = X ]; then
- echo "clone() required first argument is missing"
- return 1
- fi
-
- case $module in
- "pixman")
- BASEDIR=""
- ;;
- "xcb")
- BASEDIR=""
- ;;
- "mesa")
- BASEDIR=""
- ;;
- "xkeyboard-config")
- BASEDIR=""
- ;;
- *)
- BASEDIR="xorg/"
- ;;
- esac
-
- DIR="$module/$component"
- GITROOT=${GITROOT:="git://anongit.freedesktop.org/git"}
-
- if [ ! -d "$DIR" ]; then
- git clone "$GITROOT/$BASEDIR$DIR" "$DIR"
- if [ $? -ne 0 ]; then
- echo "Failed to clone $module module component $component. Ignoring."
- clonefailed_components="$clonefailed_components $module/$component"
- return 1
- fi
- old_pwd=`pwd`
- cd $DIR
- if [ $? -ne 0 ]; then
- echo "Failed to cd to $module module component $component. Ignoring."
- clonefailed_components="$clonefailed_components $module/$component"
- return 1
- return 1
- fi
- git submodule init
- if [ $? -ne 0 ]; then
- echo "Failed to initialize $module module component $component submodule. Ignoring."
- clonefailed_components="$clonefailed_components $module/$component"
- return 1
- fi
- git submodule update
- if [ $? -ne 0 ]; then
- echo "Failed to update $module module component $component submodule. Ignoring."
- clonefailed_components="$clonefailed_components $module/$component"
- return 1
- fi
- cd ${old_pwd}
- else
- echo "git cannot clone into an existing directory $module/$component"
- return 1
- fi
-
- return 0
-}
-
-# perform processing of each module/component
-# arguments:
-# $1 - module
-# $2 - component
-# $3 - configure options
-# returns:
-# 0 - good
-# 1 - bad
-process() {
- needs_config=0
-
- module=$1
- component=$2
- confopts="$3"
- # preconds
- if [ X"$module" = X ]; then
- echo "process() required first argument is missing"
- return 1
- fi
-
- module_title $module "$component" "$confopts"
-
- SRCDIR=""
- CONFCMD=""
- if [ -f $module/$component/autogen.sh ]; then
- SRCDIR="$module/$component"
- CONFCMD="autogen.sh"
- elif [ X"$CLONE" != X ]; then
- clone $module $component
- if [ $? -eq 0 ]; then
- SRCDIR="$module/$component"
- CONFCMD="autogen.sh"
- fi
- needs_config=1
- else
- checkfortars $module $component
- CONFCMD="configure"
- fi
-
- if [ X"$SRCDIR" = X ]; then
- echo "$module module component $component does not exist, skipping."
- nonexistent_components="$nonexistent_components $module/$component"
- return 0
- fi
-
- if [ X"$BUILT_MODULES_FILE" != X ]; then
- echo "$module/$component" >> $BUILT_MODULES_FILE
- fi
-
- old_pwd=`pwd`
- cd $SRCDIR
- if [ $? -ne 0 ]; then
- failed cd1 $module $component
- return 1
- fi
-
- if [ X"$GITCMD" != X ]; then
- $GITCMD
- rtn=$?
- cd $old_pwd
-
- if [ $rtn -ne 0 ]; then
- failed "$GITCMD" $module $component
- return 1
- fi
- return 0
- fi
-
- if [ X"$PULL" != X ]; then
- git pull --rebase
- if [ $? -ne 0 ]; then
- failed "git pull" $module $component
- cd $old_pwd
- return 1
- fi
- # The parent module knows which commit the submodule should be at
- git submodule update
- if [ $? -ne 0 ]; then
- failed "git submodule update" $module $component
- return 1
- fi
- fi
-
- # Build outside source directory
- if [ X"$DIR_ARCH" != X ] ; then
- mkdir -p "$DIR_ARCH"
- if [ $? -ne 0 ]; then
- failed mkdir $module $component
- cd $old_pwd
- return 1
- fi
- cd "$DIR_ARCH"
- if [ $? -ne 0 ]; then
- failed cd2 $module $component
- cd ${old_pwd}
- return 1
- fi
- fi
-
- # Use "sh autogen.sh" since some scripts are not executable in CVS
- if [ $needs_config -eq 1 ] || [ X"$NOAUTOGEN" = X ]; then
- sh ${DIR_CONFIG}/${CONFCMD} \
- ${PREFIX_USER:+--prefix="$PREFIX"} \
- ${EPREFIX_USER:+--exec-prefix="$EPREFIX"} \
- ${BINDIR_USER:+--bindir="$BINDIR"} \
- ${DATAROOTDIR_USER:+--datarootdir="$DATAROOTDIR"} \
- ${DATADIR_USER:+--datadir="$DATADIR"} \
- ${LIBDIR_USER:+--libdir="$LIBDIR"} \
- ${LOCALSTATEDIR_USER:+--localstatedir="$LOCALSTATEDIR"} \
- ${QUIET:+--quiet} \
- ${CONFFLAGS} $confopts \
- ${CC:+CC="$CC"} \
- ${CPP:+CPP="$CPP"} \
- ${CPPFLAGS:+CPPFLAGS="$CPPFLAGS"} \
- ${CFLAGS:+CFLAGS="$CFLAGS"} \
- ${LDFLAGS:+LDFLAGS="$LDFLAGS"}
- if [ $? -ne 0 ]; then
- failed ${CONFCMD} $module $component
- cd $old_pwd
- return 1
- fi
- fi
-
- # A custom 'make' target list was supplied through --cmd option
- if [ X"$MAKECMD" != X ]; then
- ${MAKE} $MAKEFLAGS $MAKECMD
- rtn=$?
- cd $old_pwd
-
- if [ $rtn -ne 0 ]; then
- failed "$MAKE $MAKEFLAGS $MAKECMD" $module $component
- return 1
- fi
- return 0
- fi
-
- ${MAKE} $MAKEFLAGS
- if [ $? -ne 0 ]; then
- # Rerun with Automake silent rules disabled to see failing gcc statement
- if [ X"$RETRY_VERBOSE" != X ]; then
- echo ""
- echo "build.sh: Rebuilding $component with Automake silent rules disabled"
- ${MAKE} $MAKEFLAGS V=1
- fi
- failed "$MAKE $MAKEFLAGS" $module $component
- cd $old_pwd
- return 1
- fi
-
- if [ X"$CHECK" != X ]; then
- ${MAKE} $MAKEFLAGS check
- if [ $? -ne 0 ]; then
- failed "$MAKE $MAKEFLAGS check" $module $component
- cd $old_pwd
- return 1
- fi
- fi
-
- if [ X"$CLEAN" != X ]; then
- ${MAKE} $MAKEFLAGS clean
- if [ $? -ne 0 ]; then
- failed "$MAKE $MAKEFLAGS clean" $module $component
- cd $old_pwd
- return 1
- fi
- fi
-
- if [ X"$DIST" != X ]; then
- ${MAKE} $MAKEFLAGS dist
- if [ $? -ne 0 ]; then
- failed "$MAKE $MAKEFLAGS dist" $module $component
- cd $old_pwd
- return 1
- fi
- fi
-
- if [ X"$DISTCHECK" != X ]; then
- ${MAKE} $MAKEFLAGS distcheck
- if [ $? -ne 0 ]; then
- failed "$MAKE $MAKEFLAGS distcheck" $module $component
- cd $old_pwd
- return 1
- fi
- fi
-
- $SUDO env LD_LIBRARY_PATH=$LD_LIBRARY_PATH ${MAKE} $MAKEFLAGS install
- if [ $? -ne 0 ]; then
- failed "$SUDO env LD_LIBRARY_PATH=$LD_LIBRARY_PATH $MAKE $MAKEFLAGS install" $module $component
- cd $old_pwd
- return 1
- fi
-
- cd ${old_pwd}
- return 0
-}
-
-# process each module/component and handle:
-# LISTONLY, RESUME, NOQUIT, and BUILD_ONE
-# arguments:
-# $1 - module
-# $2 - component
-# $3 - configure options
-# returns:
-# 0 - good
-# 1 - bad
-build() {
- module=$1
- component=$2
- confopts="$3"
- if [ X"$LISTONLY" != X ]; then
- echo "$module/$component"
- return 0
- fi
-
- if [ X"$RESUME" != X ]; then
- if [ X"$RESUME" = X"$module/$component" ]; then
- unset RESUME
- # Resume build at this module
- else
- echo "Skipping $module module component $component..."
- return 0
- fi
- fi
-
- process $module "$component" "$confopts"
- if [ $? -ne 0 ]; then
- echo "build.sh: error processing module/component: \"$module/$component\""
- if [ X"$NOQUIT" = X ]; then
- exit 1
- fi
- fi
-
- if [ X"$BUILD_ONE" != X ]; then
- echo "Single-component build complete"
- exit 0
- fi
-}
-
-# protocol headers have no build order dependencies
-build_proto() {
- case $HOST_OS in
- Darwin)
- build proto applewmproto
- ;;
- CYGWIN*)
- build proto windowswmproto
- ;;
- esac
- build proto bigreqsproto
- build proto compositeproto
- build proto damageproto
- build proto dmxproto
- build proto dri2proto
- build proto fixesproto
- build proto fontsproto
- build proto glproto
- build proto inputproto
- build proto kbproto
- build proto randrproto
- build proto recordproto
- build proto renderproto
- build proto resourceproto
- build proto scrnsaverproto
- build proto videoproto
- build proto x11proto
- build proto xcmiscproto
- build proto xextproto
- build proto xf86bigfontproto
- build proto xf86dgaproto
- build proto xf86driproto
- build proto xf86vidmodeproto
- build proto xineramaproto
- build xcb proto
-}
-
-# bitmaps is needed for building apps, so has to be done separately first
-# cursors depends on apps/xcursorgen
-# xkbdata is obsolete - use xkbdesc from xkeyboard-config instead
-build_data() {
-# build data bitmaps
- build data cursors
-}
-
-# All protocol modules must be installed before the libs (okay, that's an
-# overstatement, but all protocol modules should be installed anyway)
-#
-# the libraries have a dependency order:
-# xtrans, Xau, Xdmcp before anything else
-# fontenc before Xfont
-# ICE before SM
-# X11 before Xext
-# (X11 and SM) before Xt
-# Xt before Xmu and Xpm
-# Xext before any other extension library
-# Xfixes before Xcomposite
-# Xp before XprintUtil before XprintAppUtil
-#
-build_lib() {
- build lib libxtrans
- build lib libXau
- build lib libXdmcp
- build xcb pthread-stubs
- build xcb libxcb
- build xcb util
- build xcb util-image
- build xcb util-keysyms
- build xcb util-renderutil
- build xcb util-wm
- build lib libX11
- build lib libXext
- case $HOST_OS in
- Darwin)
- build lib libAppleWM
- ;;
- CYGWIN*)
- build lib libWindowsWM
- ;;
- esac
- build lib libdmx
- build lib libfontenc
- build lib libFS
- build lib libICE
- build lib libSM
- build lib libXt
- build lib libXmu
- build lib libXpm
- build lib libXaw
- build lib libXfixes
- build lib libXcomposite
- build lib libXrender
- build lib libXdamage
- build lib libXcursor
- build lib libXfont
- build lib libXft
- build lib libXi
- build lib libXinerama
- build lib libxkbfile
- build lib libXrandr
- build lib libXRes
- build lib libXScrnSaver
- build lib libXtst
- build lib libXv
- build lib libXvMC
- build lib libXxf86dga
- build lib libXxf86vm
- build lib libpciaccess
- build pixman ""
-}
-
-# Most apps depend at least on libX11.
-#
-# bdftopcf depends on libXfont
-# mkfontscale depends on libfontenc and libfreetype
-# mkfontdir depends on mkfontscale
-#
-# TODO: detailed breakdown of which apps require which libs
-build_app() {
- build app appres
- build app bdftopcf
- build app beforelight
- build app bitmap
- build app editres
- build app fonttosfnt
- build app fslsfonts
- build app fstobdf
- build app iceauth
- build app ico
- build app listres
- build app luit
- build app mkcomposecache
- build app mkfontdir
- build app mkfontscale
- build app oclock
- build app rgb
- build app rendercheck
- build app rstart
- build app scripts
- build app sessreg
- build app setxkbmap
- build app showfont
- build app smproxy
- build app twm
- build app viewres
- build app x11perf
- build app xauth
- build app xbacklight
- build app xbiff
- build app xcalc
- build app xclipboard
- build app xclock
- build app xcmsdb
- build app xconsole
- build app xcursorgen
- build app xdbedizzy
- build app xditview
- build app xdm
- build app xdpyinfo
- build app xdriinfo
- build app xedit
- build app xev
- build app xeyes
- build app xf86dga
- build app xfd
- build app xfontsel
- build app xfs
- build app xfsinfo
- build app xgamma
- build app xgc
- build app xhost
- build app xinit
- build app xinput
- build app xkbcomp
- build app xkbevd
- build app xkbprint
- build app xkbutils
- build app xkill
- build app xload
- build app xlogo
- build app xlsatoms
- build app xlsclients
- build app xlsfonts
- build app xmag
- build app xman
- build app xmessage
- build app xmh
- build app xmodmap
- build app xmore
- build app xprop
- build app xrandr
- build app xrdb
- build app xrefresh
- build app xscope
- build app xset
- build app xsetmode
- build app xsetroot
- build app xsm
- build app xstdcmap
- build app xvidtune
- build app xvinfo
- build app xwd
- build app xwininfo
- build app xwud
-}
-
-build_mesa() {
- build mesa drm
- build mesa mesa
-}
-
-# The server requires at least the following libraries:
-# Xfont, Xau, Xdmcp, pciaccess
-build_xserver() {
- build xserver ""
-}
-
-build_driver_input() {
- # Some drivers are only buildable on some OS'es
- case $HOST_OS in
- Linux)
- build driver xf86-input-evdev
- build driver xf86-input-joystick
- ;;
- FreeBSD | NetBSD | OpenBSD | Dragonfly | GNU/kFreeBSD)
- build driver xf86-input-joystick
- ;;
- esac
-
- # And some drivers are only buildable on some CPUs.
- case $HOST_CPU in
- i*86 | amd64 | x86_64)
- build driver xf86-input-vmmouse
- ;;
- esac
-
- build driver xf86-input-keyboard
- build driver xf86-input-mouse
- build driver xf86-input-synaptics
- build driver xf86-input-void
-}
-
-build_driver_video() {
- # Some drivers are only buildable on some OS'es
- case $HOST_OS in
- FreeBSD)
- case $HOST_CPU in
- sparc64)
- build driver xf86-video-sunffb
- ;;
- esac
- ;;
- NetBSD | OpenBSD)
- build driver xf86-video-wsfb
- build driver xf86-video-sunffb
- ;;
- Linux)
- build driver xf86-video-sisusb
- build driver xf86-video-sunffb
- build driver xf86-video-v4l
- build driver xf86-video-xgixp
- case $HOST_CPU in
- i*86)
- # AMD Geode CPU. Driver contains 32 bit assembler code
- build driver xf86-video-geode
- ;;
- esac
- ;;
- esac
-
- # Some drivers are only buildable on some architectures
- case $HOST_CPU in
- sparc | sparc64)
- build driver xf86-video-suncg14
- build driver xf86-video-suncg3
- build driver xf86-video-suncg6
- build driver xf86-video-sunleo
- build driver xf86-video-suntcx
- ;;
- i*86 | amd64 | x86_64)
- build driver xf86-video-i740
- build driver xf86-video-intel
- ;;
- esac
-
- build driver xf86-video-apm
- build driver xf86-video-ark
- build driver xf86-video-ast
- build driver xf86-video-ati
- build driver xf86-video-chips
- build driver xf86-video-cirrus
- build driver xf86-video-dummy
- build driver xf86-video-fbdev
-# build driver xf86-video-glide
- build driver xf86-video-glint
- build driver xf86-video-i128
- build driver xf86-video-mach64
- build driver xf86-video-mga
- build driver xf86-video-neomagic
- build driver xf86-video-newport
- build driver xf86-video-nv
- build driver xf86-video-rendition
- build driver xf86-video-r128
- build driver xf86-video-s3
- build driver xf86-video-s3virge
- build driver xf86-video-savage
- build driver xf86-video-siliconmotion
- build driver xf86-video-sis
- build driver xf86-video-tdfx
- build driver xf86-video-tga
- build driver xf86-video-trident
- build driver xf86-video-tseng
- build driver xf86-video-vesa
- build driver xf86-video-vmware
- build driver xf86-video-voodoo
- build driver xf86-video-xgi
-}
-
-# The server must be built before the drivers
-build_driver() {
- # XQuartz doesn't need these...
- case $HOST_OS in
- Darwin) return 0 ;;
- esac
-
- build_driver_input
- build_driver_video
-}
-
-# All fonts require mkfontscale and mkfontdir to be available
-#
-# The following fonts require bdftopcf to be available:
-# adobe-100dpi, adobe-75dpi, adobe-utopia-100dpi, adobe-utopia-75dpi,
-# arabic-misc, bh-100dpi, bh-75dpi, bh-lucidatypewriter-100dpi,
-# bh-lucidatypewriter-75dpi, bitstream-100dpi, bitstream-75dpi,
-# cronyx-cyrillic, cursor-misc, daewoo-misc, dec-misc, isas-misc,
-# jis-misc, micro-misc, misc-cyrillic, misc-misc, mutt-misc,
-# schumacher-misc, screen-cyrillic, sony-misc, sun-misc and
-# winitzki-cyrillic
-#
-# The font util component must be built before any of the fonts, since they
-# use the fontutil.m4 installed by it. (As do several other modules, such
-# as libfontenc and app/xfs, which is why it is moved up to the top.)
-#
-# The alias component is recommended to be installed after the other fonts
-# since the fonts.alias files reference specific fonts installed from the
-# other font components
-build_font() {
- build font encodings
- build font adobe-100dpi
- build font adobe-75dpi
- build font adobe-utopia-100dpi
- build font adobe-utopia-75dpi
- build font adobe-utopia-type1
- build font arabic-misc
- build font bh-100dpi
- build font bh-75dpi
- build font bh-lucidatypewriter-100dpi
- build font bh-lucidatypewriter-75dpi
- build font bh-ttf
- build font bh-type1
- build font bitstream-100dpi
- build font bitstream-75dpi
- build font bitstream-speedo
- build font bitstream-type1
- build font cronyx-cyrillic
- build font cursor-misc
- build font daewoo-misc
- build font dec-misc
- build font ibm-type1
- build font isas-misc
- build font jis-misc
- build font micro-misc
- build font misc-cyrillic
- build font misc-ethiopic
- build font misc-meltho
- build font misc-misc
- build font mutt-misc
- build font schumacher-misc
- build font screen-cyrillic
- build font sony-misc
- build font sun-misc
- build font winitzki-cyrillic
- build font xfree86-type1
- build font alias
-}
-
-# makedepend requires xproto
-build_util() {
- build util cf
- build util imake
- build util gccmakedep
- build util lndir
-
- build xkeyboard-config ""
-}
-
-# xorg-docs requires xorg-sgml-doctools
-build_doc() {
- build doc xorg-sgml-doctools
- build doc xorg-docs
-}
-
-# just process the sub-projects supplied in the given file ($MODFILE)
-# in the order in which they are found in the list
-# (prerequisites and ordering are the responsibility of the user)
-# globals used:
-# $MODFILE - readable file containing list of modules to process
-# and their optional configuration options
-# arguments:
-# (none)
-# returns:
-# 0 - good
-# 1 - bad
-process_module_file() {
- # preconds
- if [ X"$MODFILE" = X ]; then
- echo "internal process_module_file() error, \$MODFILE is empty"
- return 1
- fi
- if [ ! -r "$MODFILE" ]; then
- echo "module file '$MODFILE' is not readable or does not exist"
- return 1
- fi
-
- # read from input file, skipping blank and comment lines
- while read line; do
- # skip blank lines
- if [ X"$line" = X ]; then
- continue
- fi
-
- # skip comment lines
- echo "$line" | grep "^#" > /dev/null
- if [ $? -eq 0 ]; then
- continue
- fi
-
- module=`echo $line | cut -d' ' -f1 | cut -d'/' -f1`
- component=`echo $line | cut -d' ' -f1 | cut -d'/' -f2`
- confopts_check=`echo $line | cut -d' ' -f2-`
- if [ "$module/$component" = "$confopts_check" ]; then
- confopts=""
- else
- confopts="$confopts_check"
- fi
- build $module "$component" "$confopts"
- done <"$MODFILE"
-
- return 0
-}
-
-usage() {
- basename="`expr "//$0" : '.*/\([^/]*\)'`"
- echo "Usage: $basename [options] [prefix]"
- echo "Options:"
- echo " -a Do NOT run auto config tools (autogen.sh, configure)"
- echo " -b Use .build.unknown build directory"
- echo " -c Run make clean in addition to \"all install\""
- echo " -D Run make dist in addition to \"all install\""
- echo " -d Run make distcheck in addition \"all install\""
- echo " -g Compile and link with debug information"
- echo " -h, --help Display this help and exit successfully"
- echo " -n Do not quit after error; just print error message"
- echo " -o <module/component> Build just this <module/component>"
- echo " -p Update source code before building (git pull --rebase)"
- echo " -s <sudo> The command name providing superuser privilege"
- echo " --autoresume <file> Append module being built to, and autoresume from, <file>"
- echo " --check Run make check in addition \"all install\""
- echo " --clone Clone non-existing repositories (uses \$GITROOT if set)"
- echo " --cmd <cmd> Execute arbitrary git, gmake, or make command <cmd>"
- echo " --confflags <options> Pass <options> to autgen.sh/configure of all modules"
- echo " --modfile <file> Only process the module/components specified in <file>"
- echo " Any text after, and on the same line as, the module/component"
- echo " is assumed to be configuration options for the configuration"
- echo " of each module/component specifically"
- echo " --retry-v1 Remake 'all' on failure with Automake silent rules disabled"
- echo ""
- echo "Usage: $basename -L"
- echo " -L : just list modules to build"
- echo ""
- envoptions
-}
-
-# Ensure the named variable value contains a full path name
-# arguments:
-# $1 - the variable value (the path to examine)
-# $2 - the name of the variable
-# returns:
-# returns nothing or exit on error with message
-check_full_path () {
- path=$1
- varname=$2
- if [ X"`expr $path : "\(.\)"`" != X/ ]; then
- echo "The path \"$path\" supplied by \"$varname\" must be a full path name"
- echo ""
- usage
- exit 1
- fi
-}
-
-# Ensure the named variable value contains a writable directory
-# arguments:
-# $1 - the variable value (the path to examine)
-# $2 - the name of the variable
-# returns:
-# returns nothing or exit on error with message
-check_writable_dir () {
- path=$1
- varname=$2
- if [ X"$SUDO" = X ]; then
- if [ ! -d "$path" ] || [ ! -w "$path" ]; then
- echo "The path \"$path\" supplied by \"$varname\" must be a writable directory"
- echo ""
- usage
- exit 1
- fi
- fi
-}
-
-# perform sanity checks on cmdline args which require arguments
-# arguments:
-# $1 - the option being examined
-# $2 - the argument to the option
-# returns:
-# if it returns, everything is good
-# otherwise it exit's
-required_arg() {
- option=$1
- arg=$2
- # preconds
- if [ X"$option" = X ]; then
- echo "internal required_arg() error, missing first argument"
- exit 1
- fi
-
- # check for an argument
- if [ X"$arg" = X ]; then
- echo "the '$option' option is missing its required argument"
- echo ""
- usage
- exit 1
- fi
-
- # does the argument look like an option?
- echo $arg | grep "^-" > /dev/null
- if [ $? -eq 0 ]; then
- echo "the argument '$arg' of option '$option' looks like an option itself"
- echo ""
- usage
- exit 1
- fi
-}
-
-#------------------------------------------------------------------------------
-# Script main line
-#------------------------------------------------------------------------------
-
-# Initialize variables controlling end of run reports
-failed_components=""
-nonexistent_components=""
-clonefailed_components=""
-
-# Set variables supporting multiple binaries for a single source tree
-HAVE_ARCH="`uname -i`"
-DIR_ARCH=""
-DIR_CONFIG="."
-
-# Set variables for conditionally building some components
-HOST_OS=`uname -s`
-export HOST_OS
-HOST_CPU=`uname -m`
-export HOST_CPU
-
-# Process command line args
-while [ $# != 0 ]
-do
- case $1 in
- -a)
- NOAUTOGEN=1
- ;;
- -b)
- DIR_ARCH=".build.$HAVE_ARCH"
- DIR_CONFIG=".."
- ;;
- -c)
- CLEAN=1
- ;;
- -D)
- DIST=1
- ;;
- -d)
- DISTCHECK=1
- ;;
- -g)
- CFLAGS="${CFLAGS} -g3 -O0"
- ;;
- -h|--help)
- usage
- exit 0
- ;;
- -L)
- LISTONLY=1
- ;;
- -n)
- NOQUIT=1
- ;;
- -o)
- required_arg $1 $2
- shift
- RESUME=$1
- BUILD_ONE=1
- ;;
- -p)
- PULL=1
- ;;
- -s)
- required_arg $1 $2
- shift
- SUDO=$1
- ;;
- --autoresume)
- required_arg $1 $2
- shift
- BUILT_MODULES_FILE=$1
- [ -f $1 ] && RESUME=`tail -n 1 $1`
- ;;
- --check)
- CHECK=1
- ;;
- --clone)
- CLONE=1
- ;;
- --cmd)
- required_arg $1 $2
- shift
- cmd1=`echo $1 | cut -d' ' -f1`
- cmd2=`echo $1 | cut -d' ' -f2`
-
- # verify the command exists
- which $cmd1 > /dev/null 2>&1
- if [ $? -ne 0 ]; then
- echo "The specified command '$cmd1' does not appear to exist"
- echo ""
- usage
- exit 1
- fi
-
- case X"$cmd1" in
- X"git")
- GITCMD=$1
- ;;
- X"make" | X"gmake")
- MAKECMD=$cmd2
- ;;
- *)
- echo "The script can only process 'make', 'gmake', or 'git' commands"
- echo "It can't process '$cmd1' commands"
- echo ""
- usage
- exit 1
- ;;
- esac
- ;;
- --confflags)
- shift
- CONFFLAGS=$1
- ;;
- --modfile)
- required_arg $1 $2
- shift
- if [ ! -r "$1" ]; then
- echo "can't find/read file '$1'"
- exit 1
- fi
- MODFILE=$1
- ;;
- --retry-v1)
- RETRY_VERBOSE=1
- ;;
- *)
- if [ X"$too_many" = Xyes ]; then
- echo "unrecognized and/or too many command-line arguments"
- echo " PREFIX: $PREFIX"
- echo " Extra arguments: $1"
- echo ""
- usage
- exit 1
- fi
-
- # check that 'prefix' doesn't look like an option
- echo $1 | grep "^-" > /dev/null
- if [ $? -eq 0 ]; then
- echo "'prefix' appears to be an option"
- echo ""
- usage
- exit 1
- fi
-
- PREFIX=$1
- too_many=yes
- ;;
- esac
-
- shift
-done
-
-# All user input has been obtained, set-up the user shell variables
-if [ X"$LISTONLY" = X ]; then
- setup_buildenv
- echo "Building to run $HOST_OS / $HOST_CPU ($HOST)"
- date
-fi
-
-if [ X"$MODFILE" = X ]; then
- # We must install the global macros before anything else
- build util macros
- build font util
-
- build_doc
- build_proto
- # Required by mesa and depends on xproto
- build util makedepend
- build_lib
- build_mesa
-
- build data bitmaps
- build_app
- build_xserver
- build_driver
- build_data
- build_font
- build_util
-else
- process_module_file
-fi
-
-if [ X"$LISTONLY" != X ]; then
- exit 0
-fi
-
-# Print the end date/time to compare with the start date/time
-date
-
-# Report about components that failed for one reason or another
-if [ X"$nonexistent_components" != X ]; then
- echo ""
- echo "***** Skipped components (not available) *****"
- echo "Could neither find a git repository (at the <module/component> paths)"
- echo "or a tarball (at the <module/> paths or ./) for:"
- echo " <module/component>"
- for mod in $nonexistent_components; do
- echo " $mod"
- done
- echo "You may want to provide the --clone option to build.sh"
- echo "to automatically git-clone the missing components"
- echo ""
-fi
-
-if [ X"$failed_components" != X ]; then
- echo ""
- echo "***** Failed components *****"
- for mod in $failed_components; do
- echo " $mod"
- done
- echo ""
-fi
-
-if [ X"$CLONE" != X ] && [ X"$clonefailed_components" != X ]; then
- echo ""
- echo "***** Components failed to clone *****"
- for mod in $clonefailed_components; do
- echo " $mod"
- done
- echo ""
-fi
-
diff --git a/xorg-build b/xorg-build
new file mode 100755
index 0000000..94202c2
--- /dev/null
+++ b/xorg-build
@@ -0,0 +1,1360 @@
+#!/bin/sh
+#
+# Note on portability:
+# This script is intended to run on any platform supported by X.Org.
+# The Autoconf generated configure script is a good reference as to what is permitted.
+# Basically, it should be able to run in a Bourne shell.
+
+envoptions() {
+cat << EOF
+Environment variables specific to build.sh:
+ PREFIX Install architecture-independent files in PREFIX [/usr/local]
+ Each module/components is invoked with --prefix
+ EPREFIX Install architecture-dependent files in EPREFIX [PREFIX]
+ Each module/components is invoked with --exec-prefix
+ BINDIR Install user executables [EPREFIX/bin]
+ Each module/components is invoked with --bindir
+ DATAROOTDIR Install read-only arch-independent data root [PREFIX/share]
+ Each module/components is invoked with --datarootdir
+ DATADIR Install read-only architecture-independent data [DATAROOTDIR]
+ Each module/components is invoked with --datadir
+ LIBDIR Install object code libraries [EPREFIX/lib]
+ Each module/components is invoked with --libdir
+ LOCALSTATEDIR Modifiable single-machine data [PREFIX/var]
+ Each module/components is invoked with --localstatedir
+ QUIET Do not print messages saying which checks are being made
+ Each module/components is invoked with --quite
+ GITROOT Source code repository path [git://anongit.freedesktop.org/git]
+ Optional when using --clone to update source code before building
+ CONFFLAGS Configure options to pass to all Autoconf configure scripts
+ Refer to 'configure --help' from any module/components
+
+Environment variables defined by the GNU Build System:
+ ACLOCAL The aclocal cmd name [aclocal -I \${DESTDIR}/\${DATADIR}/aclocal]
+ DESTDIR Path to the staging area where installed objects are relocated
+ MAKE The name of the make command [make]
+ MAKEFLAGS: Options to pass to all \$(MAKE) invocations
+ CC C compiler command
+ CFLAGS C compiler flags
+ LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
+ nonstandard directory <lib dir>
+ CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
+ you have headers in a nonstandard directory <include dir>
+ CPP C preprocessor
+
+Environment variables defined by the shell:
+ PATH List of directories that the shell searches for commands
+ \$DESTDIR/\$BINDIR is prepended
+
+Environment variables defined by the dynamic linker:
+ LD_LIBRARY_PATH List directories that the linker searches for shared objects
+ \$DESTDIR/\$LIBDIR is prepended
+
+Environment variables defined by the pkg-config system:
+ PKG_CONFIG_PATH List directories that pkg-config searches for libraries
+ \$DESTDIR/\$DATADIR/pkgconfig and
+ \$DESTDIR/\$LIBDIR/pkgconfig are prepended
+EOF
+}
+
+setup_buildenv() {
+
+ # Remember if the user had supplied a value through env var or cmd line
+ # A value from cmd line takes precedence of the shell environment
+ PREFIX_USER=${PREFIX:+yes}
+ EPREFIX_USER=${EPREFIX:+yes}
+ BINDIR_USER=${BINDIR:+yes}
+ DATAROOTDIR_USER=${DATAROOTDIR:+yes}
+ DATADIR_USER=${DATADIR:+yes}
+ LIBDIR_USER=${LIBDIR:+yes}
+ LOCALSTATEDIR_USER=${LOCALSTATEDIR:+yes}
+
+ # Assign a default value if no value was supplied by the user
+ PREFIX=${PREFIX:-/usr/local}
+ EPREFIX=${EPREFIX:-$PREFIX}
+ BINDIR=${BINDIR:-$EPREFIX/bin}
+ DATAROOTDIR=${DATAROOTDIR:-$PREFIX/share}
+ DATADIR=${DATADIR:-$DATAROOTDIR}
+ LIBDIR=${LIBDIR:-$EPREFIX/lib}
+ LOCALSTATEDIR=${LOCALSTATEDIR:-$PREFIX/var}
+
+ # Support previous usage of LIBDIR which was a subdir relative to PREFIX
+ # We use EPREFIX as this is what PREFIX really meant at the time
+ if [ X"$LIBDIR" != X ]; then
+ if [ X"`expr $LIBDIR : "\(.\)"`" != X/ ]; then
+ echo ""
+ echo "Warning: this usage of \$LIBDIR is deprecated. Use a full path name."
+ echo "The supplied value \"$LIBDIR\" has been replaced with $EPREFIX/$LIBDIR."
+ echo ""
+ LIBDIR=$EPREFIX/$LIBDIR
+ fi
+ fi
+
+ # All directories variables must be full path names
+ check_full_path $PREFIX PREFIX
+ check_full_path $EPREFIX EPREFIX
+ check_full_path $BINDIR BINDIR
+ check_full_path $DATAROOTDIR DATAROOTDIR
+ check_full_path $DATADIR DATADIR
+ check_full_path $LIBDIR LIBDIR
+ check_full_path $LOCALSTATEDIR LOCALSTATEDIR
+
+ # This will catch the case where user forgets to set PREFIX
+ # and does not have write permission in the /usr/local default location
+ check_writable_dir ${DESTDIR}${PREFIX} PREFIX
+
+ # Must create local aclocal dir or aclocal fails
+ ACLOCAL_LOCALDIR="${DESTDIR}${DATADIR}/aclocal"
+ $SUDO mkdir -p ${ACLOCAL_LOCALDIR}
+
+ # The following is required to make aclocal find our .m4 macros
+ ACLOCAL=${ACLOCAL:="aclocal"}
+ ACLOCAL="${ACLOCAL} -I ${ACLOCAL_LOCALDIR}"
+ export ACLOCAL
+
+ # The following is required to make pkg-config find our .pc metadata files
+ PKG_CONFIG_PATH=${DESTDIR}${DATADIR}/pkgconfig:${DESTDIR}${LIBDIR}/pkgconfig${PKG_CONFIG_PATH+:$PKG_CONFIG_PATH}
+ export PKG_CONFIG_PATH
+
+ # Set the library path so that locally built libs will be found by apps
+ LD_LIBRARY_PATH=${DESTDIR}${LIBDIR}${LD_LIBRARY_PATH+:$LD_LIBRARY_PATH}
+ export LD_LIBRARY_PATH
+
+ # Set the path so that locally built apps will be found and used
+ PATH=${DESTDIR}${BINDIR}${PATH+:$PATH}
+ export PATH
+
+ # Choose which make program to use
+ MAKE=${MAKE:="make"}
+
+ # Create the log file directory
+ $SUDO mkdir -p ${DESTDIR}${LOCALSTATEDIR}/log
+}
+
+# explain where a failure occurred
+# if you find this message in the build output it can help tell you where the failure occurred
+# arguments:
+# $1 - which command failed
+# $2/$3 - which module/component failed
+# returns:
+# (irrelevant)
+failed() {
+ cmd=$1
+ module=$2
+ component=$3
+ echo "build.sh: \"$cmd\" failed on $module/$component"
+ failed_components="$failed_components $module/$component"
+}
+
+# print a pretty title to separate the processing of each module
+# arguments:
+# $1 - module
+# $2 - component
+# $3 - configuration options
+# returns:
+# (irrelevant)
+module_title() {
+ module=$1
+ component=$2
+ confopts="$3"
+ # preconds
+ if [ X"$module" = X ]; then
+ return
+ fi
+
+ echo ""
+ echo "======================================================================"
+ echo "== Processing module/component: \"$module/$component\""
+ echo "== configuration options: $CONFFLAGS $confopts"
+}
+
+checkfortars() {
+ module=$1
+ component=$2
+ case $module in
+ "data")
+ case $component in
+ "cursors") component="xcursor-themes" ;;
+ "bitmaps") component="xbitmaps" ;;
+ esac
+ ;;
+ "font")
+ if [ X"$component" != X"encodings" ]; then
+ component="font-$component"
+ fi
+ ;;
+ "lib")
+ case $component in
+ "libXRes") component="libXres" ;;
+ "libxtrans") component="xtrans" ;;
+ esac
+ ;;
+ "pixman")
+ module="lib"
+ component="pixman"
+ ;;
+ "proto")
+ case $component in
+ "x11proto") component="xproto" ;;
+ esac
+ ;;
+ "util")
+ case $component in
+ "cf") component="xorg-cf-files" ;;
+ "macros") component="util-macros" ;;
+ esac
+ ;;
+ "xcb")
+ case $component in
+ "proto")
+ module="xcb/proto"
+ component="xcb-proto"
+ ;;
+ "pthread-stubs")
+ module="xcb/pthread-stubs"
+ component="libpthread-stubs"
+ ;;
+ "libxcb")
+ module="xcb/libxcb"
+ component="libxcb"
+ ;;
+ util*)
+ module="xcb/$component"
+ component="xcb-$component"
+ ;;
+ esac
+ ;;
+ "mesa")
+ case $component in
+ "drm")
+ module="mesa/drm"
+ component="libdrm"
+ ;;
+ "mesa")
+ module="mesa/mesa"
+ component="MesaLib"
+ ;;
+ esac
+ ;;
+ "xkeyboard-config")
+ component="xkeyboard-config"
+ ;;
+ "xserver")
+ component="xorg-server"
+ ;;
+ esac
+ for ii in $module .; do
+ for jj in bz2 gz; do
+ TARFILE=`ls -1rt $ii/$component-*.tar.$jj 2> /dev/null | tail -n 1`
+ if [ X"$TARFILE" != X ]; then
+ SRCDIR=`echo $TARFILE | sed "s,.tar.$jj,,"`
+ SRCDIR=`echo $SRCDIR | sed "s,MesaLib,Mesa,"`
+ if [ ! -d $SRCDIR ]; then
+ TAROPTS=xjf
+ if [ X"$jj" = X"gz" ]; then
+ TAROPTS=xzf
+ fi
+ tar $TAROPTS $TARFILE -C $ii
+ if [ $? -ne 0 ]; then
+ failed tar $module $component
+ return 1
+ fi
+ fi
+ return 0
+ fi
+ done
+ done
+
+ return 0
+}
+
+# perform a clone of a git repository
+# this function provides the mapping between module/component names
+# and their location in the fd.o repository
+# arguments:
+# $1 - module
+# $2 - component (optional)
+# returns:
+# 0 - good
+# 1 - bad
+clone() {
+ module=$1
+ component=$2
+ # preconds
+ if [ X"$module" = X ]; then
+ echo "clone() required first argument is missing"
+ return 1
+ fi
+
+ case $module in
+ "pixman")
+ BASEDIR=""
+ ;;
+ "xcb")
+ BASEDIR=""
+ ;;
+ "mesa")
+ BASEDIR=""
+ ;;
+ "xkeyboard-config")
+ BASEDIR=""
+ ;;
+ *)
+ BASEDIR="xorg/"
+ ;;
+ esac
+
+ DIR="$module/$component"
+ GITROOT=${GITROOT:="git://anongit.freedesktop.org/git"}
+
+ if [ ! -d "$DIR" ]; then
+ git clone "$GITROOT/$BASEDIR$DIR" "$DIR"
+ if [ $? -ne 0 ]; then
+ echo "Failed to clone $module module component $component. Ignoring."
+ clonefailed_components="$clonefailed_components $module/$component"
+ return 1
+ fi
+ old_pwd=`pwd`
+ cd $DIR
+ if [ $? -ne 0 ]; then
+ echo "Failed to cd to $module module component $component. Ignoring."
+ clonefailed_components="$clonefailed_components $module/$component"
+ return 1
+ return 1
+ fi
+ git submodule init
+ if [ $? -ne 0 ]; then
+ echo "Failed to initialize $module module component $component submodule. Ignoring."
+ clonefailed_components="$clonefailed_components $module/$component"
+ return 1
+ fi
+ git submodule update
+ if [ $? -ne 0 ]; then
+ echo "Failed to update $module module component $component submodule. Ignoring."
+ clonefailed_components="$clonefailed_components $module/$component"
+ return 1
+ fi
+ cd ${old_pwd}
+ else
+ echo "git cannot clone into an existing directory $module/$component"
+ return 1
+ fi
+
+ return 0
+}
+
+# perform processing of each module/component
+# arguments:
+# $1 - module
+# $2 - component
+# $3 - configure options
+# returns:
+# 0 - good
+# 1 - bad
+process() {
+ needs_config=0
+
+ module=$1
+ component=$2
+ confopts="$3"
+ # preconds
+ if [ X"$module" = X ]; then
+ echo "process() required first argument is missing"
+ return 1
+ fi
+
+ module_title $module "$component" "$confopts"
+
+ SRCDIR=""
+ CONFCMD=""
+ if [ -f $module/$component/autogen.sh ]; then
+ SRCDIR="$module/$component"
+ CONFCMD="autogen.sh"
+ elif [ X"$CLONE" != X ]; then
+ clone $module $component
+ if [ $? -eq 0 ]; then
+ SRCDIR="$module/$component"
+ CONFCMD="autogen.sh"
+ fi
+ needs_config=1
+ else
+ checkfortars $module $component
+ CONFCMD="configure"
+ fi
+
+ if [ X"$SRCDIR" = X ]; then
+ echo "$module module component $component does not exist, skipping."
+ nonexistent_components="$nonexistent_components $module/$component"
+ return 0
+ fi
+
+ if [ X"$BUILT_MODULES_FILE" != X ]; then
+ echo "$module/$component" >> $BUILT_MODULES_FILE
+ fi
+
+ old_pwd=`pwd`
+ cd $SRCDIR
+ if [ $? -ne 0 ]; then
+ failed cd1 $module $component
+ return 1
+ fi
+
+ if [ X"$GITCMD" != X ]; then
+ $GITCMD
+ rtn=$?
+ cd $old_pwd
+
+ if [ $rtn -ne 0 ]; then
+ failed "$GITCMD" $module $component
+ return 1
+ fi
+ return 0
+ fi
+
+ if [ X"$PULL" != X ]; then
+ git pull --rebase
+ if [ $? -ne 0 ]; then
+ failed "git pull" $module $component
+ cd $old_pwd
+ return 1
+ fi
+ # The parent module knows which commit the submodule should be at
+ git submodule update
+ if [ $? -ne 0 ]; then
+ failed "git submodule update" $module $component
+ return 1
+ fi
+ fi
+
+ # Build outside source directory
+ if [ X"$DIR_ARCH" != X ] ; then
+ mkdir -p "$DIR_ARCH"
+ if [ $? -ne 0 ]; then
+ failed mkdir $module $component
+ cd $old_pwd
+ return 1
+ fi
+ cd "$DIR_ARCH"
+ if [ $? -ne 0 ]; then
+ failed cd2 $module $component
+ cd ${old_pwd}
+ return 1
+ fi
+ fi
+
+ # Use "sh autogen.sh" since some scripts are not executable in CVS
+ if [ $needs_config -eq 1 ] || [ X"$NOAUTOGEN" = X ]; then
+ sh ${DIR_CONFIG}/${CONFCMD} \
+ ${PREFIX_USER:+--prefix="$PREFIX"} \
+ ${EPREFIX_USER:+--exec-prefix="$EPREFIX"} \
+ ${BINDIR_USER:+--bindir="$BINDIR"} \
+ ${DATAROOTDIR_USER:+--datarootdir="$DATAROOTDIR"} \
+ ${DATADIR_USER:+--datadir="$DATADIR"} \
+ ${LIBDIR_USER:+--libdir="$LIBDIR"} \
+ ${LOCALSTATEDIR_USER:+--localstatedir="$LOCALSTATEDIR"} \
+ ${QUIET:+--quiet} \
+ ${CONFFLAGS} $confopts \
+ ${CC:+CC="$CC"} \
+ ${CPP:+CPP="$CPP"} \
+ ${CPPFLAGS:+CPPFLAGS="$CPPFLAGS"} \
+ ${CFLAGS:+CFLAGS="$CFLAGS"} \
+ ${LDFLAGS:+LDFLAGS="$LDFLAGS"}
+ if [ $? -ne 0 ]; then
+ failed ${CONFCMD} $module $component
+ cd $old_pwd
+ return 1
+ fi
+ fi
+
+ # A custom 'make' target list was supplied through --cmd option
+ if [ X"$MAKECMD" != X ]; then
+ ${MAKE} $MAKEFLAGS $MAKECMD
+ rtn=$?
+ cd $old_pwd
+
+ if [ $rtn -ne 0 ]; then
+ failed "$MAKE $MAKEFLAGS $MAKECMD" $module $component
+ return 1
+ fi
+ return 0
+ fi
+
+ ${MAKE} $MAKEFLAGS
+ if [ $? -ne 0 ]; then
+ # Rerun with Automake silent rules disabled to see failing gcc statement
+ if [ X"$RETRY_VERBOSE" != X ]; then
+ echo ""
+ echo "build.sh: Rebuilding $component with Automake silent rules disabled"
+ ${MAKE} $MAKEFLAGS V=1
+ fi
+ failed "$MAKE $MAKEFLAGS" $module $component
+ cd $old_pwd
+ return 1
+ fi
+
+ if [ X"$CHECK" != X ]; then
+ ${MAKE} $MAKEFLAGS check
+ if [ $? -ne 0 ]; then
+ failed "$MAKE $MAKEFLAGS check" $module $component
+ cd $old_pwd
+ return 1
+ fi
+ fi
+
+ if [ X"$CLEAN" != X ]; then
+ ${MAKE} $MAKEFLAGS clean
+ if [ $? -ne 0 ]; then
+ failed "$MAKE $MAKEFLAGS clean" $module $component
+ cd $old_pwd
+ return 1
+ fi
+ fi
+
+ if [ X"$DIST" != X ]; then
+ ${MAKE} $MAKEFLAGS dist
+ if [ $? -ne 0 ]; then
+ failed "$MAKE $MAKEFLAGS dist" $module $component
+ cd $old_pwd
+ return 1
+ fi
+ fi
+
+ if [ X"$DISTCHECK" != X ]; then
+ ${MAKE} $MAKEFLAGS distcheck
+ if [ $? -ne 0 ]; then
+ failed "$MAKE $MAKEFLAGS distcheck" $module $component
+ cd $old_pwd
+ return 1
+ fi
+ fi
+
+ $SUDO env LD_LIBRARY_PATH=$LD_LIBRARY_PATH ${MAKE} $MAKEFLAGS install
+ if [ $? -ne 0 ]; then
+ failed "$SUDO env LD_LIBRARY_PATH=$LD_LIBRARY_PATH $MAKE $MAKEFLAGS install" $module $component
+ cd $old_pwd
+ return 1
+ fi
+
+ cd ${old_pwd}
+ return 0
+}
+
+# process each module/component and handle:
+# LISTONLY, RESUME, NOQUIT, and BUILD_ONE
+# arguments:
+# $1 - module
+# $2 - component
+# $3 - configure options
+# returns:
+# 0 - good
+# 1 - bad
+build() {
+ module=$1
+ component=$2
+ confopts="$3"
+ if [ X"$LISTONLY" != X ]; then
+ echo "$module/$component"
+ return 0
+ fi
+
+ if [ X"$RESUME" != X ]; then
+ if [ X"$RESUME" = X"$module/$component" ]; then
+ unset RESUME
+ # Resume build at this module
+ else
+ echo "Skipping $module module component $component..."
+ return 0
+ fi
+ fi
+
+ process $module "$component" "$confopts"
+ if [ $? -ne 0 ]; then
+ echo "build.sh: error processing module/component: \"$module/$component\""
+ if [ X"$NOQUIT" = X ]; then
+ exit 1
+ fi
+ fi
+
+ if [ X"$BUILD_ONE" != X ]; then
+ echo "Single-component build complete"
+ exit 0
+ fi
+}
+
+# protocol headers have no build order dependencies
+build_proto() {
+ case $HOST_OS in
+ Darwin)
+ build proto applewmproto
+ ;;
+ CYGWIN*)
+ build proto windowswmproto
+ ;;
+ esac
+ build proto bigreqsproto
+ build proto compositeproto
+ build proto damageproto
+ build proto dmxproto
+ build proto dri2proto
+ build proto fixesproto
+ build proto fontsproto
+ build proto glproto
+ build proto inputproto
+ build proto kbproto
+ build proto randrproto
+ build proto recordproto
+ build proto renderproto
+ build proto resourceproto
+ build proto scrnsaverproto
+ build proto videoproto
+ build proto x11proto
+ build proto xcmiscproto
+ build proto xextproto
+ build proto xf86bigfontproto
+ build proto xf86dgaproto
+ build proto xf86driproto
+ build proto xf86vidmodeproto
+ build proto xineramaproto
+ build xcb proto
+}
+
+# bitmaps is needed for building apps, so has to be done separately first
+# cursors depends on apps/xcursorgen
+# xkbdata is obsolete - use xkbdesc from xkeyboard-config instead
+build_data() {
+# build data bitmaps
+ build data cursors
+}
+
+# All protocol modules must be installed before the libs (okay, that's an
+# overstatement, but all protocol modules should be installed anyway)
+#
+# the libraries have a dependency order:
+# xtrans, Xau, Xdmcp before anything else
+# fontenc before Xfont
+# ICE before SM
+# X11 before Xext
+# (X11 and SM) before Xt
+# Xt before Xmu and Xpm
+# Xext before any other extension library
+# Xfixes before Xcomposite
+# Xp before XprintUtil before XprintAppUtil
+#
+build_lib() {
+ build lib libxtrans
+ build lib libXau
+ build lib libXdmcp
+ build xcb pthread-stubs
+ build xcb libxcb
+ build xcb util
+ build xcb util-image
+ build xcb util-keysyms
+ build xcb util-renderutil
+ build xcb util-wm
+ build lib libX11
+ build lib libXext
+ case $HOST_OS in
+ Darwin)
+ build lib libAppleWM
+ ;;
+ CYGWIN*)
+ build lib libWindowsWM
+ ;;
+ esac
+ build lib libdmx
+ build lib libfontenc
+ build lib libFS
+ build lib libICE
+ build lib libSM
+ build lib libXt
+ build lib libXmu
+ build lib libXpm
+ build lib libXaw
+ build lib libXfixes
+ build lib libXcomposite
+ build lib libXrender
+ build lib libXdamage
+ build lib libXcursor
+ build lib libXfont
+ build lib libXft
+ build lib libXi
+ build lib libXinerama
+ build lib libxkbfile
+ build lib libXrandr
+ build lib libXRes
+ build lib libXScrnSaver
+ build lib libXtst
+ build lib libXv
+ build lib libXvMC
+ build lib libXxf86dga
+ build lib libXxf86vm
+ build lib libpciaccess
+ build pixman ""
+}
+
+# Most apps depend at least on libX11.
+#
+# bdftopcf depends on libXfont
+# mkfontscale depends on libfontenc and libfreetype
+# mkfontdir depends on mkfontscale
+#
+# TODO: detailed breakdown of which apps require which libs
+build_app() {
+ build app appres
+ build app bdftopcf
+ build app beforelight
+ build app bitmap
+ build app editres
+ build app fonttosfnt
+ build app fslsfonts
+ build app fstobdf
+ build app iceauth
+ build app ico
+ build app listres
+ build app luit
+ build app mkcomposecache
+ build app mkfontdir
+ build app mkfontscale
+ build app oclock
+ build app rgb
+ build app rendercheck
+ build app rstart
+ build app scripts
+ build app sessreg
+ build app setxkbmap
+ build app showfont
+ build app smproxy
+ build app twm
+ build app viewres
+ build app x11perf
+ build app xauth
+ build app xbacklight
+ build app xbiff
+ build app xcalc
+ build app xclipboard
+ build app xclock
+ build app xcmsdb
+ build app xconsole
+ build app xcursorgen
+ build app xdbedizzy
+ build app xditview
+ build app xdm
+ build app xdpyinfo
+ build app xdriinfo
+ build app xedit
+ build app xev
+ build app xeyes
+ build app xf86dga
+ build app xfd
+ build app xfontsel
+ build app xfs
+ build app xfsinfo
+ build app xgamma
+ build app xgc
+ build app xhost
+ build app xinit
+ build app xinput
+ build app xkbcomp
+ build app xkbevd
+ build app xkbprint
+ build app xkbutils
+ build app xkill
+ build app xload
+ build app xlogo
+ build app xlsatoms
+ build app xlsclients
+ build app xlsfonts
+ build app xmag
+ build app xman
+ build app xmessage
+ build app xmh
+ build app xmodmap
+ build app xmore
+ build app xprop
+ build app xrandr
+ build app xrdb
+ build app xrefresh
+ build app xscope
+ build app xset
+ build app xsetmode
+ build app xsetroot
+ build app xsm
+ build app xstdcmap
+ build app xvidtune
+ build app xvinfo
+ build app xwd
+ build app xwininfo
+ build app xwud
+}
+
+build_mesa() {
+ build mesa drm
+ build mesa mesa
+}
+
+# The server requires at least the following libraries:
+# Xfont, Xau, Xdmcp, pciaccess
+build_xserver() {
+ build xserver ""
+}
+
+build_driver_input() {
+ # Some drivers are only buildable on some OS'es
+ case $HOST_OS in
+ Linux)
+ build driver xf86-input-evdev
+ build driver xf86-input-joystick
+ ;;
+ FreeBSD | NetBSD | OpenBSD | Dragonfly | GNU/kFreeBSD)
+ build driver xf86-input-joystick
+ ;;
+ esac
+
+ # And some drivers are only buildable on some CPUs.
+ case $HOST_CPU in
+ i*86 | amd64 | x86_64)
+ build driver xf86-input-vmmouse
+ ;;
+ esac
+
+ build driver xf86-input-keyboard
+ build driver xf86-input-mouse
+ build driver xf86-input-synaptics
+ build driver xf86-input-void
+}
+
+build_driver_video() {
+ # Some drivers are only buildable on some OS'es
+ case $HOST_OS in
+ FreeBSD)
+ case $HOST_CPU in
+ sparc64)
+ build driver xf86-video-sunffb
+ ;;
+ esac
+ ;;
+ NetBSD | OpenBSD)
+ build driver xf86-video-wsfb
+ build driver xf86-video-sunffb
+ ;;
+ Linux)
+ build driver xf86-video-sisusb
+ build driver xf86-video-sunffb
+ build driver xf86-video-v4l
+ build driver xf86-video-xgixp
+ case $HOST_CPU in
+ i*86)
+ # AMD Geode CPU. Driver contains 32 bit assembler code
+ build driver xf86-video-geode
+ ;;
+ esac
+ ;;
+ esac
+
+ # Some drivers are only buildable on some architectures
+ case $HOST_CPU in
+ sparc | sparc64)
+ build driver xf86-video-suncg14
+ build driver xf86-video-suncg3
+ build driver xf86-video-suncg6
+ build driver xf86-video-sunleo
+ build driver xf86-video-suntcx
+ ;;
+ i*86 | amd64 | x86_64)
+ build driver xf86-video-i740
+ build driver xf86-video-intel
+ ;;
+ esac
+
+ build driver xf86-video-apm
+ build driver xf86-video-ark
+ build driver xf86-video-ast
+ build driver xf86-video-ati
+ build driver xf86-video-chips
+ build driver xf86-video-cirrus
+ build driver xf86-video-dummy
+ build driver xf86-video-fbdev
+# build driver xf86-video-glide
+ build driver xf86-video-glint
+ build driver xf86-video-i128
+ build driver xf86-video-mach64
+ build driver xf86-video-mga
+ build driver xf86-video-neomagic
+ build driver xf86-video-newport
+ build driver xf86-video-nv
+ build driver xf86-video-rendition
+ build driver xf86-video-r128
+ build driver xf86-video-s3
+ build driver xf86-video-s3virge
+ build driver xf86-video-savage
+ build driver xf86-video-siliconmotion
+ build driver xf86-video-sis
+ build driver xf86-video-tdfx
+ build driver xf86-video-tga
+ build driver xf86-video-trident
+ build driver xf86-video-tseng
+ build driver xf86-video-vesa
+ build driver xf86-video-vmware
+ build driver xf86-video-voodoo
+ build driver xf86-video-xgi
+}
+
+# The server must be built before the drivers
+build_driver() {
+ # XQuartz doesn't need these...
+ case $HOST_OS in
+ Darwin) return 0 ;;
+ esac
+
+ build_driver_input
+ build_driver_video
+}
+
+# All fonts require mkfontscale and mkfontdir to be available
+#
+# The following fonts require bdftopcf to be available:
+# adobe-100dpi, adobe-75dpi, adobe-utopia-100dpi, adobe-utopia-75dpi,
+# arabic-misc, bh-100dpi, bh-75dpi, bh-lucidatypewriter-100dpi,
+# bh-lucidatypewriter-75dpi, bitstream-100dpi, bitstream-75dpi,
+# cronyx-cyrillic, cursor-misc, daewoo-misc, dec-misc, isas-misc,
+# jis-misc, micro-misc, misc-cyrillic, misc-misc, mutt-misc,
+# schumacher-misc, screen-cyrillic, sony-misc, sun-misc and
+# winitzki-cyrillic
+#
+# The font util component must be built before any of the fonts, since they
+# use the fontutil.m4 installed by it. (As do several other modules, such
+# as libfontenc and app/xfs, which is why it is moved up to the top.)
+#
+# The alias component is recommended to be installed after the other fonts
+# since the fonts.alias files reference specific fonts installed from the
+# other font components
+build_font() {
+ build font encodings
+ build font adobe-100dpi
+ build font adobe-75dpi
+ build font adobe-utopia-100dpi
+ build font adobe-utopia-75dpi
+ build font adobe-utopia-type1
+ build font arabic-misc
+ build font bh-100dpi
+ build font bh-75dpi
+ build font bh-lucidatypewriter-100dpi
+ build font bh-lucidatypewriter-75dpi
+ build font bh-ttf
+ build font bh-type1
+ build font bitstream-100dpi
+ build font bitstream-75dpi
+ build font bitstream-speedo
+ build font bitstream-type1
+ build font cronyx-cyrillic
+ build font cursor-misc
+ build font daewoo-misc
+ build font dec-misc
+ build font ibm-type1
+ build font isas-misc
+ build font jis-misc
+ build font micro-misc
+ build font misc-cyrillic
+ build font misc-ethiopic
+ build font misc-meltho
+ build font misc-misc
+ build font mutt-misc
+ build font schumacher-misc
+ build font screen-cyrillic
+ build font sony-misc
+ build font sun-misc
+ build font winitzki-cyrillic
+ build font xfree86-type1
+ build font alias
+}
+
+# makedepend requires xproto
+build_util() {
+ build util cf
+ build util imake
+ build util gccmakedep
+ build util lndir
+
+ build xkeyboard-config ""
+}
+
+# xorg-docs requires xorg-sgml-doctools
+build_doc() {
+ build doc xorg-sgml-doctools
+ build doc xorg-docs
+}
+
+# just process the sub-projects supplied in the given file ($MODFILE)
+# in the order in which they are found in the list
+# (prerequisites and ordering are the responsibility of the user)
+# globals used:
+# $MODFILE - readable file containing list of modules to process
+# and their optional configuration options
+# arguments:
+# (none)
+# returns:
+# 0 - good
+# 1 - bad
+process_module_file() {
+ # preconds
+ if [ X"$MODFILE" = X ]; then
+ echo "internal process_module_file() error, \$MODFILE is empty"
+ return 1
+ fi
+ if [ ! -r "$MODFILE" ]; then
+ echo "module file '$MODFILE' is not readable or does not exist"
+ return 1
+ fi
+
+ # read from input file, skipping blank and comment lines
+ while read line; do
+ # skip blank lines
+ if [ X"$line" = X ]; then
+ continue
+ fi
+
+ # skip comment lines
+ echo "$line" | grep "^#" > /dev/null
+ if [ $? -eq 0 ]; then
+ continue
+ fi
+
+ module=`echo $line | cut -d' ' -f1 | cut -d'/' -f1`
+ component=`echo $line | cut -d' ' -f1 | cut -d'/' -f2`
+ confopts_check=`echo $line | cut -d' ' -f2-`
+ if [ "$module/$component" = "$confopts_check" ]; then
+ confopts=""
+ else
+ confopts="$confopts_check"
+ fi
+ build $module "$component" "$confopts"
+ done <"$MODFILE"
+
+ return 0
+}
+
+usage() {
+ basename="`expr "//$0" : '.*/\([^/]*\)'`"
+ echo "Usage: $basename [options] [prefix]"
+ echo "Options:"
+ echo " -a Do NOT run auto config tools (autogen.sh, configure)"
+ echo " -b Use .build.unknown build directory"
+ echo " -c Run make clean in addition to \"all install\""
+ echo " -D Run make dist in addition to \"all install\""
+ echo " -d Run make distcheck in addition \"all install\""
+ echo " -g Compile and link with debug information"
+ echo " -h, --help Display this help and exit successfully"
+ echo " -n Do not quit after error; just print error message"
+ echo " -o <module/component> Build just this <module/component>"
+ echo " -p Update source code before building (git pull --rebase)"
+ echo " -s <sudo> The command name providing superuser privilege"
+ echo " --autoresume <file> Append module being built to, and autoresume from, <file>"
+ echo " --check Run make check in addition \"all install\""
+ echo " --clone Clone non-existing repositories (uses \$GITROOT if set)"
+ echo " --cmd <cmd> Execute arbitrary git, gmake, or make command <cmd>"
+ echo " --confflags <options> Pass <options> to autgen.sh/configure of all modules"
+ echo " --modfile <file> Only process the module/components specified in <file>"
+ echo " Any text after, and on the same line as, the module/component"
+ echo " is assumed to be configuration options for the configuration"
+ echo " of each module/component specifically"
+ echo " --retry-v1 Remake 'all' on failure with Automake silent rules disabled"
+ echo ""
+ echo "Usage: $basename -L"
+ echo " -L : just list modules to build"
+ echo ""
+ envoptions
+}
+
+# Ensure the named variable value contains a full path name
+# arguments:
+# $1 - the variable value (the path to examine)
+# $2 - the name of the variable
+# returns:
+# returns nothing or exit on error with message
+check_full_path () {
+ path=$1
+ varname=$2
+ if [ X"`expr $path : "\(.\)"`" != X/ ]; then
+ echo "The path \"$path\" supplied by \"$varname\" must be a full path name"
+ echo ""
+ usage
+ exit 1
+ fi
+}
+
+# Ensure the named variable value contains a writable directory
+# arguments:
+# $1 - the variable value (the path to examine)
+# $2 - the name of the variable
+# returns:
+# returns nothing or exit on error with message
+check_writable_dir () {
+ path=$1
+ varname=$2
+ if [ X"$SUDO" = X ]; then
+ if [ ! -d "$path" ] || [ ! -w "$path" ]; then
+ echo "The path \"$path\" supplied by \"$varname\" must be a writable directory"
+ echo ""
+ usage
+ exit 1
+ fi
+ fi
+}
+
+# perform sanity checks on cmdline args which require arguments
+# arguments:
+# $1 - the option being examined
+# $2 - the argument to the option
+# returns:
+# if it returns, everything is good
+# otherwise it exit's
+required_arg() {
+ option=$1
+ arg=$2
+ # preconds
+ if [ X"$option" = X ]; then
+ echo "internal required_arg() error, missing first argument"
+ exit 1
+ fi
+
+ # check for an argument
+ if [ X"$arg" = X ]; then
+ echo "the '$option' option is missing its required argument"
+ echo ""
+ usage
+ exit 1
+ fi
+
+ # does the argument look like an option?
+ echo $arg | grep "^-" > /dev/null
+ if [ $? -eq 0 ]; then
+ echo "the argument '$arg' of option '$option' looks like an option itself"
+ echo ""
+ usage
+ exit 1
+ fi
+}
+
+#------------------------------------------------------------------------------
+# Script main line
+#------------------------------------------------------------------------------
+
+# Initialize variables controlling end of run reports
+failed_components=""
+nonexistent_components=""
+clonefailed_components=""
+
+# Set variables supporting multiple binaries for a single source tree
+HAVE_ARCH="`uname -i`"
+DIR_ARCH=""
+DIR_CONFIG="."
+
+# Set variables for conditionally building some components
+HOST_OS=`uname -s`
+export HOST_OS
+HOST_CPU=`uname -m`
+export HOST_CPU
+
+# Process command line args
+while [ $# != 0 ]
+do
+ case $1 in
+ -a)
+ NOAUTOGEN=1
+ ;;
+ -b)
+ DIR_ARCH=".build.$HAVE_ARCH"
+ DIR_CONFIG=".."
+ ;;
+ -c)
+ CLEAN=1
+ ;;
+ -D)
+ DIST=1
+ ;;
+ -d)
+ DISTCHECK=1
+ ;;
+ -g)
+ CFLAGS="${CFLAGS} -g3 -O0"
+ ;;
+ -h|--help)
+ usage
+ exit 0
+ ;;
+ -L)
+ LISTONLY=1
+ ;;
+ -n)
+ NOQUIT=1
+ ;;
+ -o)
+ required_arg $1 $2
+ shift
+ RESUME=$1
+ BUILD_ONE=1
+ ;;
+ -p)
+ PULL=1
+ ;;
+ -s)
+ required_arg $1 $2
+ shift
+ SUDO=$1
+ ;;
+ --autoresume)
+ required_arg $1 $2
+ shift
+ BUILT_MODULES_FILE=$1
+ [ -f $1 ] && RESUME=`tail -n 1 $1`
+ ;;
+ --check)
+ CHECK=1
+ ;;
+ --clone)
+ CLONE=1
+ ;;
+ --cmd)
+ required_arg $1 $2
+ shift
+ cmd1=`echo $1 | cut -d' ' -f1`
+ cmd2=`echo $1 | cut -d' ' -f2`
+
+ # verify the command exists
+ which $cmd1 > /dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ echo "The specified command '$cmd1' does not appear to exist"
+ echo ""
+ usage
+ exit 1
+ fi
+
+ case X"$cmd1" in
+ X"git")
+ GITCMD=$1
+ ;;
+ X"make" | X"gmake")
+ MAKECMD=$cmd2
+ ;;
+ *)
+ echo "The script can only process 'make', 'gmake', or 'git' commands"
+ echo "It can't process '$cmd1' commands"
+ echo ""
+ usage
+ exit 1
+ ;;
+ esac
+ ;;
+ --confflags)
+ shift
+ CONFFLAGS=$1
+ ;;
+ --modfile)
+ required_arg $1 $2
+ shift
+ if [ ! -r "$1" ]; then
+ echo "can't find/read file '$1'"
+ exit 1
+ fi
+ MODFILE=$1
+ ;;
+ --retry-v1)
+ RETRY_VERBOSE=1
+ ;;
+ *)
+ if [ X"$too_many" = Xyes ]; then
+ echo "unrecognized and/or too many command-line arguments"
+ echo " PREFIX: $PREFIX"
+ echo " Extra arguments: $1"
+ echo ""
+ usage
+ exit 1
+ fi
+
+ # check that 'prefix' doesn't look like an option
+ echo $1 | grep "^-" > /dev/null
+ if [ $? -eq 0 ]; then
+ echo "'prefix' appears to be an option"
+ echo ""
+ usage
+ exit 1
+ fi
+
+ PREFIX=$1
+ too_many=yes
+ ;;
+ esac
+
+ shift
+done
+
+# All user input has been obtained, set-up the user shell variables
+if [ X"$LISTONLY" = X ]; then
+ setup_buildenv
+ echo "Building to run $HOST_OS / $HOST_CPU ($HOST)"
+ date
+fi
+
+if [ X"$MODFILE" = X ]; then
+ # We must install the global macros before anything else
+ build util macros
+ build font util
+
+ build_doc
+ build_proto
+ # Required by mesa and depends on xproto
+ build util makedepend
+ build_lib
+ build_mesa
+
+ build data bitmaps
+ build_app
+ build_xserver
+ build_driver
+ build_data
+ build_font
+ build_util
+else
+ process_module_file
+fi
+
+if [ X"$LISTONLY" != X ]; then
+ exit 0
+fi
+
+# Print the end date/time to compare with the start date/time
+date
+
+# Report about components that failed for one reason or another
+if [ X"$nonexistent_components" != X ]; then
+ echo ""
+ echo "***** Skipped components (not available) *****"
+ echo "Could neither find a git repository (at the <module/component> paths)"
+ echo "or a tarball (at the <module/> paths or ./) for:"
+ echo " <module/component>"
+ for mod in $nonexistent_components; do
+ echo " $mod"
+ done
+ echo "You may want to provide the --clone option to build.sh"
+ echo "to automatically git-clone the missing components"
+ echo ""
+fi
+
+if [ X"$failed_components" != X ]; then
+ echo ""
+ echo "***** Failed components *****"
+ for mod in $failed_components; do
+ echo " $mod"
+ done
+ echo ""
+fi
+
+if [ X"$CLONE" != X ] && [ X"$clonefailed_components" != X ]; then
+ echo ""
+ echo "***** Components failed to clone *****"
+ for mod in $clonefailed_components; do
+ echo " $mod"
+ done
+ echo ""
+fi
+
--
1.7.6.233.gd79bc
More information about the xorg-devel
mailing list