+rebuild_host_os ()
+{
+ HOST_OS="${UNAME_MACHINE_ARCH}-${VENDOR}-${VENDOR_DISTRIBUTION}-${VENDOR_RELEASE}-${UNAME_KERNEL}-${UNAME_KERNEL_RELEASE}"
+ if [ -z "$1" ]; then
+ if $verbose; then
+ echo "HOST_OS=$HOST_OS"
+ fi
+ fi
+}
+
+# Validate the distribution name, or toss an erro
+# values: darwin,fedora,rhel,ubuntu,debian,opensuse
+set_VENDOR_DISTRIBUTION ()
+{
+ local dist="$(echo "$1" | tr '[:upper:]' '[:lower:]')"
+ case "$dist" in
+ darwin)
+ VENDOR_DISTRIBUTION='darwin'
+ ;;
+ fedora)
+ VENDOR_DISTRIBUTION='fedora'
+ ;;
+ rhel)
+ VENDOR_DISTRIBUTION='rhel'
+ ;;
+ debian)
+ VENDOR_DISTRIBUTION='debian'
+ ;;
+ ubuntu)
+ VENDOR_DISTRIBUTION='ubuntu'
+ ;;
+ suse)
+ VENDOR_DISTRIBUTION='opensuse'
+ ;;
+ opensuse)
+ VENDOR_DISTRIBUTION='opensuse'
+ ;;
+ arch)
+ VENDOR_DISTRIBUTION='arch'
+ ;;
+ *)
+ die "attempt to set an invalid VENDOR_DISTRIBUTION=$dist"
+ ;;
+ esac
+}
+
+# Validate a Vendor's release name/number
+set_VENDOR_RELEASE ()
+{
+ local release="$(echo "$1" | tr '[:upper:]' '[:lower:]')"
+
+ if $verbose; then
+ echo "VENDOR_DISTRIBUTION:$VENDOR_DISTRIBUTION"
+ echo "VENDOR_RELEASE:$release"
+ fi
+
+ case $VENDOR_DISTRIBUTION in
+ darwin)
+ case $release in
+ 10.6*)
+ VENDOR_RELEASE='snow_leopard'
+ ;;
+ 10.7*)
+ VENDOR_RELEASE='mountain'
+ ;;
+ mountain)
+ VENDOR_RELEASE='mountain'
+ ;;
+ 10.8.*)
+ echo "mountain_lion"
+ VENDOR_RELEASE='mountain_lion'
+ ;;
+ 10.9)
+ echo "mavericks"
+ VENDOR_RELEASE='mavericks'
+ ;;
+ 10.9.*)
+ echo "mavericks"
+ VENDOR_RELEASE='mavericks'
+ ;;
+ *)
+ echo $release
+ VENDOR_RELEASE='unknown'
+ ;;
+ esac
+ ;;
+ fedora)
+ VENDOR_RELEASE="$release"
+ if [[ "x$VENDOR_RELEASE" == '18' ]]; then
+ VENDOR_RELEASE='sphericalcow'
+ fi
+ ;;
+ rhel)
+ VENDOR_RELEASE="$release"
+ ;;
+ debian)
+ VENDOR_RELEASE="$release"
+ ;;
+ ubuntu)
+ VENDOR_RELEASE="$release"
+ if [[ "x$VENDOR_RELEASE" == 'x12.04' ]]; then
+ VENDOR_RELEASE="precise"
+ elif [[ "x$VENDOR_RELEASE" == 'x12.10' ]]; then
+ VENDOR_RELEASE="quantal"
+ elif [[ "x$VENDOR_RELEASE" == 'x13.04' ]]; then
+ VENDOR_RELEASE="raring"
+ fi
+ ;;
+ opensuse)
+ VENDOR_RELEASE="$release"
+ ;;
+ arch)
+ VENDOR_RELEASE=""
+ ;;
+ unknown)
+ die "attempt to set VENDOR_RELEASE without setting VENDOR_DISTRIBUTION"
+ ;;
+ *)
+ die "attempt to set VENDOR_RELEASE with an invalid VENDOR_DISTRIBUTION=$VENDOR_DISTRIBUTION"
+ ;;
+ esac
+}
+
+
+# Valid values are: apple, redhat, centos, canonical, oracle, suse
+set_VENDOR ()
+{
+ local vendor="$(echo "$1" | tr '[:upper:]' '[:lower:]')"
+
+ case $vendor in
+ apple)
+ VENDOR='apple'
+ ;;
+ redhat)
+ VENDOR='redhat'
+ ;;
+ fedora)
+ VENDOR='redhat'
+ ;;
+ redhat-release-server-*)
+ VENDOR='redhat'
+ ;;
+ enterprise-release-*)
+ VENDOR='oracle'
+ ;;
+ centos)
+ VENDOR='centos'
+ ;;
+ canonical)
+ VENDOR='canonical'
+ ;;
+ ubuntu)
+ VENDOR='canonical'
+ ;;
+ debian)
+ VENDOR='debian'
+ ;;
+ opensuse)
+ VENDOR='suse'
+ ;;
+ suse)
+ VENDOR='suse'
+ ;;
+ arch)
+ VENDOR='arch'
+ ;;
+ *)
+ die "An attempt was made to set an invalid VENDOR=$vendor"
+ ;;
+ esac
+
+ set_VENDOR_DISTRIBUTION "$2"
+ set_VENDOR_RELEASE "$3"
+
+ # Set which vendor/versions we trust for autoreconf
+ case $VENDOR_DISTRIBUTION in
+ fedora)
+ if [[ "x$VENDOR_RELEASE" == 'x18' ]]; then
+ AUTORECONF_REBUILD_HOST=true
+ elif [[ "x$VENDOR_RELEASE" == 'xsphericalcow' ]]; then
+ AUTORECONF_REBUILD_HOST=true
+ elif [[ "x$VENDOR_RELEASE" == 'x19' ]]; then
+ AUTORECONF_REBUILD_HOST=true
+ fi
+ ;;
+ canonical)
+ if [[ "x$VENDOR_RELEASE" == 'xprecise' ]]; then
+ AUTORECONF_REBUILD_HOST=true
+ elif [[ "x$VENDOR_RELEASE" == 'xquantal' ]]; then
+ AUTORECONF_REBUILD_HOST=true
+ fi
+ ;;
+ esac
+
+}
+
+determine_target_platform ()
+{
+ UNAME_MACHINE_ARCH="$(uname -m 2>/dev/null)" || UNAME_MACHINE_ARCH=unknown
+ UNAME_KERNEL="$(uname -s 2>/dev/null)" || UNAME_SYSTEM=unknown
+ UNAME_KERNEL_RELEASE="$(uname -r 2>/dev/null)" || UNAME_KERNEL_RELEASE=unknown
+
+ if [[ -x '/usr/bin/sw_vers' ]]; then
+ local _VERSION="$(/usr/bin/sw_vers -productVersion)"
+ set_VENDOR 'apple' 'darwin' $_VERSION
+ elif [[ $(uname) == 'Darwin' ]]; then
+ set_VENDOR 'apple' 'darwin' 'mountain'
+ elif [[ -f '/etc/fedora-release' ]]; then
+ local fedora_version="$(awk ' { print $3 } ' < /etc/fedora-release)"
+ set_VENDOR 'redhat' 'fedora' $fedora_version
+ elif [[ -f '/etc/centos-release' ]]; then
+ local centos_version="$(awk ' { print $7 } ' < /etc/centos-release)"
+ set_VENDOR 'centos' 'rhel' $centos_version
+ elif [[ -f '/etc/SuSE-release' ]]; then
+ local suse_distribution="$(head -1 /etc/SuSE-release | awk ' { print $1 } ')"
+ local suse_version="$(head -1 /etc/SuSE-release | awk ' { print $2 } ')"
+ set_VENDOR 'suse' $suse_distribution $suse_version
+ elif [[ -f '/etc/redhat-release' ]]; then
+ local rhel_version="$(awk ' { print $7 } ' < /etc/redhat-release)"
+ local _vendor="$(rpm -qf /etc/redhat-release)"
+ set_VENDOR $_vendor 'rhel' $rhel_version
+ elif [[ -f '/etc/os-release' ]]; then
+ source '/etc/os-release'
+ set_VENDOR $ID $ID $VERSION_ID
+ elif [[ -x '/usr/bin/lsb_release' ]]; then
+ local _ID="$(/usr/bin/lsb_release -s -i)"
+ local _VERSION="$(/usr/bin/lsb_release -s -r)"
+ set_VENDOR $_ID $_ID $_VERSION
+ elif [[ -f '/etc/lsb-release' ]]; then
+ source '/etc/lsb-release'
+ set_VENDOR 'canonical' $DISTRIB_ID $DISTRIB_CODENAME
+ fi
+
+ rebuild_host_os
+}
+
+run_configure ()
+{
+ # We will run autoreconf if we are required
+ run_autoreconf_if_required
+
+ # We always begin at the root of our build
+ if [ ! $? ]; then
+ die "Programmer error, we entered run_configure with a stacked directory"
+ fi