| 
							- #!/bin/sh
 - 
 - # Copyright (C) 2008 Jonathan Moore Liles                                     #
 - #                                                                             #
 - # This program is free software; you can redistribute it and/or modify it     #
 - # under the terms of the GNU General Public License as published by the       #
 - # Free Software Foundation; either version 2 of the License, or (at your      #
 - # option) any later version.                                                  #
 - #                                                                             #
 - # This program is distributed in the hope that it will be useful, but WITHOUT #
 - # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or       #
 - # FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for   #
 - # more details.                                                               #
 - #                                                                             #
 - # You should have received a copy of the GNU General Public License along     #
 - # with This program; see the file COPYING.  If not,write to the Free Software #
 - # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  #
 - #
 - 
 - . scripts/colors
 - 
 - #####
 - ## support functions for 'configure' scripts.
 - 
 - fatal ()
 - {
 -     echo "$BOLD$RED$*$SGR0" > /dev/stderr
 -     exit 255
 - }
 - 
 - UPDATE=no
 - HELP=no
 - 
 - split ()
 - {
 -     while [ $# -gt 0 ]
 -     do
 -         echo $1
 -         shift 1
 -     done
 - }
 - 
 - if [ $# -gt 0 ]
 - then
 -     case "$1" in
 -         --update)
 -             UPDATE=yes
 -             shift 1
 -             ;;
 -         --help)
 -             HELP=yes
 -             shift 1
 -             ;;
 -         *)
 - #            fatal "This is not an autoconf script. Run it without any options and you will be prompted."
 -             ;;
 -     esac
 - 
 -     if [ $# -gt 0 ]
 -     then
 -         echo "## options" > .config
 - 
 -         split "$@" | sed '
 - s/--\(enable\|disable\)-\([^ =]\+\)/--\1-\U\2/g;
 - s/--enable-\([^ =]\+\)=\(.*\)/USE_\1=\2/g;
 - s/--enable-\([^ =]\+\)/USE_\1=yes/g;
 - s/--disable-\([^ =]\+\)/USE_\1=no/g;
 - s/--\([^ =]\+\)/\1/g;
 - ' | sed -n '/^[^ =]\+=./p' >> .config
 -         UPDATE=yes;
 -     fi
 - fi
 - 
 - if [ $HELP != yes ] && [ $UPDATE != yes ]
 - then
 -     if ! ( [ -t 0 ] && [ -t 1 ] )
 -     then
 -         fatal "not a terminal!"
 -     fi
 - fi
 - 
 - ask ()
 - {
 -     local A D O
 - 
 -     D="`eval echo \\$$2`"
 -     D=${D:-$3}
 - 
 -     if [ $HELP = yes ]
 -     then
 -         if [ "$3" = yes ] || [ "$3" = no ]
 -         then
 -             O=`echo -n "$2" | sed s/^USE_/--enable-/ | tr '[[:upper:]]' '[[:lower:]]'`
 -         else
 -             O=`echo -n "--$2" | tr '[[:upper:]]' '[[:lower:]]'`
 -         fi
 - 
 -         printf "    ${BOLD}${GREEN}%-15s${SGR0}\t%-40s (currently: ${BOLD}%s${SGR0})\n" "$O" "$1" "$D"
 - 
 -         return
 -     fi
 - 
 -     echo -n "$BLACK$BOLD::$SGR0 ${1}? [$BOLD${D}$SGR0] "
 - 
 -     if [ $UPDATE = yes ]
 -     then
 -         A="$D"
 -         echo
 -     else
 -         read A
 -         A=${A:-$D}
 -     fi
 - 
 -     if [ "$3" = yes ] || [ "$3" = no ]
 -     then
 -         case "$A" in
 -             no | n | N) A=no ;;
 -             yes | y | Y) A=yes ;;
 -             * ) fatal "Invalid response. Must be 'yes' or 'no'" ;;
 -         esac
 -     fi
 - 
 -     append "${2}=${A:-$D}"
 - 
 -     eval "${2}='${A:-$D}'"
 - }
 - 
 - ok ()
 - {
 -     echo '
'`tput cuf 30`"$BOLD${GREEN}ok${SGR0} ${*:+${BOLD}${BLACK}($*)${SGR0}}"
 - }
 - 
 - failed ()
 - {
 -     echo '
'`tput cuf 30`"$BOLD${RED}failed!${SGR0}" > /dev/stderr
 -     rm -f .config
 - }
 - 
 - missing ()
 - {
 -     echo '
'`tput cuf 30`"$BOLD${YELLOW}missing!${SGR0}" > /dev/stderr
 - }
 - 
 - using ()
 - {
 -     [ "`eval echo \\$USE_$1`" = yes ]
 - 
 -     return $?
 - }
 - 
 - upcase ()
 - {
 -     echo "$*" | tr '[[:lower:]]' '[[:upper:]]'
 - }
 - 
 - extract_options ()
 - {
 -     local line name value
 - 
 -     if [ -f .config ]
 -     then
 -         {
 -             while read line
 -             do
 -                 [ "$line" = "## options" ] && break
 -             done
 - 
 -             while read line
 -             do
 -                 if [ "$line" = "## libs" ]
 -                 then
 -                     break
 -                 else
 -                     name=${line%=*}
 -                     value=${line#*=}
 -                     eval "$name='$value'"
 -                 fi
 -             done
 -         } < .config
 -     fi
 - }
 - 
 - begin ()
 - {
 -     echo -n "Checking sanity..."
 -     require_command tput tput > /dev/null
 -     require_command pkg_config pkg-config > /dev/null
 -     require_command sed sed > /dev/null
 -     ok
 - }
 - 
 - warn ()
 - {
 -     echo " ${BOLD}${YELLOW}* ${SGR0}${BOLD}$*"
 - }
 - 
 - info ()
 - {
 -     echo "${BOLD}${CYAN}--- ${SGR0}$*"
 - }
 - 
 - begin_options ()
 - {
 -     # get the old values
 -     extract_options
 - 
 -     if [ $HELP = yes ]
 -     then
 -         echo
 -         warn "This is a ${BOLD}non-configure${SGR0} script. Run without any arguments and you will be prompted"
 -         warn "with configuration choices. Alternatively, you may use the following autoconf style"
 -         warn "arguments for non-interactive configuration."
 -         echo
 -         echo " Available options:"
 -         echo
 -     else
 -         echo > .config
 -         append "# This file was automatically generated on `date`. Any changes may be lost!"
 -         append "## options"
 - 
 -         if [ $UPDATE = yes ]
 -         then
 -             info "Updating configuration"
 -         else
 -             info "Configuration required"
 -         fi
 -     fi
 - }
 - 
 - begin_tests ()
 - {
 -     if [ $HELP = yes ]
 -     then
 -         echo
 -         exit 0;
 -     fi
 - 
 -     append "## libs"
 -     extract_options
 - }
 - 
 - append ()
 - {
 -     echo "$1" >> .config
 - }
 - 
 - end ()
 - {
 -     info "Configuration complete"
 -     touch .config
 - }
 - 
 - require_command ()
 - {
 -     echo -n "Checking for ${BOLD}$1${SGR0}..."
 - 
 -     local name;
 - 
 -     if [ -x "$2" ]
 -     then
 -         name="$PWD/$2"
 -         ok "$name"
 -     elif [ -x "`which "$2"`" ]
 -     then
 -         name="`which "$2"`"
 -         ok "$name"
 -     else
 - 	failed
 - 	fatal "Command $1 not found."
 -     fi
 - 
 -     append "$1=$name"
 - }
 - 
 - require_package ()
 - {
 -     local name
 - 
 -     echo -n "Checking for $BOLD$1$SGR0..."
 -     if ! pkg-config --exists $3
 -     then
 -     	failed
 - 	fatal "Required package $1 doesn't appear to be installed."
 -     elif ! pkg-config --atleast-version $2 $3
 -     then
 -         failed
 -         fatal "The installed version of $1 (`pkg-config --mod-version $3`) is too old."
 -     fi
 - 
 -     name="`upcase \"$1\"`"
 -     append "${name}_LIBS=`pkg-config --libs $3 | sed 's/,\\?--as-needed//g'`"
 -     append "${name}_CFLAGS=-DHAVE_${1} `pkg-config --cflags $3`"
 - 
 -     ok `pkg-config --modversion "$3"`
 -     return 0
 - }
 - 
 - suggest_package ()
 - {
 -    local name
 - 
 -     echo -n "Checking for $BOLD$1$SGR0..."
 -     if ! pkg-config --exists $3
 -     then
 -     	missing
 - 	warn "Suggested package $1 doesn't appear to be installed. Some functionality may be missing from your build."
 -         warn "Continuing without $1...\n"
 -         return 1;
 -     elif ! pkg-config --atleast-version $2 $3
 -     then
 -         missing
 -         warn "The installed version of suggested package $1 (`pkg-config --mod-version $3`) is too old."
 -         warn "Continuing without $1..."
 -         return 1;
 -     fi
 - 
 -     name="`upcase \"$1\"`"
 -     append "${name}_LIBS=`pkg-config --libs $3 | sed 's/,\\?--as-needed//g'`"
 -     append "${name}_CFLAGS=-DHAVE_${1} `pkg-config --cflags $3`"
 - 
 -     ok `pkg-config --modversion "$3"`
 -     return 0
 - }
 - 
 - _test_version ()
 - {
 -     if [ $# = 6 ]
 -     then
 -         [ $1 -gt $4 ] && return 0
 -         [ $1 -eq $4 ] && [ $2 -gt $5 ] && return 0
 -         [ $1 -eq $4 ] && [ $2 -eq $5 ] && [ $3 -gt $6 ] && return 0
 -         [ $1 -eq $4 ] && [ $2 -eq $5 ] && [ $3 -eq $6 ] && return 0
 -         return 1
 -     elif [ $# = 4 ]
 -     then
 -         [ $1 -gt $3 ] && return 0
 -         [ $1 -eq $3 ] && [ $2 -eq $4 ] && return 0
 -         return 1
 -     fi
 - }
 - 
 - # return true if #1 is greater than or equal to $2
 - test_version ()
 - {
 -     local IFS
 -     IFS='.'
 - 
 -     _test_version $1 $2
 - }
 - 
 - version_of ()
 - {
 -     echo `pkg-config --modversion $1`
 - }
 - 
 - hostname_resolvable ()
 - {
 -     ping -c1 `hostname` >/dev/null 2>/dev/null
 - }
 - 
 - require_FLTK ()
 - {
 -     local use
 - 
 -     require_command fltk_config lib/fltk/fltk-config
 - 
 -     echo -n "Checking for ${BOLD}FLTK${SGR0}..."
 - 
 -     FLTK_VERSION=`lib/fltk/fltk-config --version`
 - 
 -     if ! test_version $FLTK_VERSION $1
 -     then
 -         failed
 -         fatal "The installed FLTK version ($FLTK_VERSION) is too old."
 -     else
 -         ok $FLTK_VERSION
 -     fi
 - 
 -     use=
 - 
 -     while [ $# -gt 1 ]
 -     do
 -         shift 1
 -         use="$use --use-$1"
 -     done
 - 
 -     append "FLTK_LIBS=`lib/fltk/fltk-config $use --libs | sed 's/,\\?--as-needed//g'`"
 -     append "FLTK_LDFLAGS=`lib/fltk/fltk-config $use --ldflags | sed 's/,\\?--as-needed//g'`"
 -     append "FLTK_CFLAGS=`lib/fltk/fltk-config $use --cflags`"
 - }
 
 
  |