yann@182: #!/bin/sh yann@182: yann@334: VERSION=$(cat .version) yann@182: DATE=$(date +%Y%m%d) yann@182: yann@183: PREFIX_DEFAULT=/usr/local yann@182: yann@182: BINDIR_set= yann@182: LIBDIR_set= yann@182: DOCDIR_set= yann@182: MANDIR_set= yann@285: LOCAL_set= yann@182: yann@182: get_optval(){ yann@182: local ret yann@182: case "$1" in yann@182: --*=?*) yann@193: echo "${1}" |cut -d '=' -f 2- yann@182: ret=0 yann@182: ;; yann@182: *) yann@182: echo "${2}" yann@182: ret=1 yann@182: ;; yann@182: esac yann@182: return ${ret} yann@182: } yann@182: yann@182: set_prefix() { yann@182: PREFIX=$(get_optval "$1" "$2") yann@376: return $? yann@182: } yann@182: yann@182: set_bindir() { yann@376: BINDIR_set=1 yann@182: BINDIR=$(get_optval "$1" "$2") yann@376: return $? yann@182: } yann@182: yann@182: set_libdir() { yann@376: LIBDIR_set=1 yann@182: LIBDIR=$(get_optval "$1" "$2") yann@376: return $? yann@182: } yann@182: yann@182: set_docdir() { yann@376: DOCDIR_set=1 yann@182: DOCDIR=$(get_optval "$1" "$2") yann@376: return $? yann@182: } yann@182: yann@182: set_mandir() { yann@376: MANDIR_set=1 yann@182: MANDIR=$(get_optval "$1" "$2") yann@376: return $? yann@182: } yann@182: yann@183: do_help() { yann@183: cat <<__EOF__ yann@197: \`configure' configures crosstool-NG ${VERSION} to adapt to many kind of systems. yann@183: yann@183: USAGE: ./configure [OPTION]... yann@183: yann@183: Defaults for the options are specified in brackets. yann@183: yann@183: Configuration: yann@183: -h, --help display this help and exit yann@185: --prefix=PREFIX install files in PREFIX [${PREFIX_DEFAULT}] yann@285: --local don't install, and use current directory yann@183: yann@183: By default, \`make install' will install all the files in yann@183: \`${PREFIX_DEFAULT}/bin', \`${PREFIX_DEFAULT}/lib' etc. You can specify yann@183: an installation prefix other than \`${PREFIX_DEFAULT}' using \`--prefix', yann@183: for instance \`--prefix=\${HOME}'. yann@183: yann@183: For better control, use the options below. yann@183: yann@183: Fine tuning of the installation directories: yann@183: --bindir=DIR user executables [PREFIX/bin] yann@183: --libdir=DIR object code libraries [PREFIX/lib] yann@183: --docdir=DIR info documentation [PREFIX/share/doc] yann@183: --mandir=DIR man documentation [PREFIX/share/man] yann@183: __EOF__ yann@183: } yann@183: yann@376: do_error() { yann@376: echo "[ERROR] ${@}" yann@376: exit 1 yann@376: } yann@376: yann@376: #--------------------------------------------------------------------- yann@376: # Set user's options yann@376: yann@182: while [ $# -ne 0 ]; do yann@182: case "$1" in yann@182: --prefix*) set_prefix "$1" "$2" && shift || shift 2;; yann@182: --bindir*) set_bindir "$1" "$2" && shift || shift 2;; yann@182: --libdir*) set_libdir "$1" "$2" && shift || shift 2;; yann@182: --docdir*) set_docdir "$1" "$2" && shift || shift 2;; yann@182: --mandir*) set_mandir "$1" "$2" && shift || shift 2;; yann@285: --local) LOCAL_set=1; shift;; yann@183: --help|-h) do_help; exit 0;; yann@183: *) do_help; exit 1;; yann@182: esac yann@182: done yann@182: yann@185: [ -z "${PREFIX}" ] && set_prefix "" "${PREFIX_DEFAULT}" yann@285: if [ "${LOCAL_set}" = "1" ]; then yann@285: set_prefix "" $(pwd) yann@285: set_bindir "" $(pwd) yann@285: set_libdir "" $(pwd) yann@285: set_docdir "" $(pwd)/docs yann@285: set_mandir "" $(pwd)/docs yann@285: fi yann@183: yann@376: #--------------------------------------------------------------------- yann@376: # Some sanity checks, now yann@376: yann@435: # If this version is a svn snapshot, try to get the revision number yann@435: # If we can't get the revision number, use date yann@553: echo -n "Computing version string... " yann@435: case "${VERSION}" in yann@435: *+svn) yann@542: REVISION=$(LC_ALL=C svnversion) yann@444: case "${REVISION}" in yann@444: exported) yann@554: VERSION="${VERSION}unknown@$(date +%Y%m%d.%H%M%S)";; yann@444: *) yann@542: URL=$(LC_ALL=C svn info 2>/dev/null |egrep 'URL: ' |cut -d ' ' -f 2-) yann@542: ROOT=$(LC_ALL=C svn info 2>/dev/null |egrep 'Repository Root: ' |cut -d ' ' -f 3-) yann@554: VERSION="${VERSION}${URL#${ROOT}}@${REVISION}" yann@444: ;; yann@444: esac yann@554: VERSION="${VERSION/\//_}" yann@435: ;; yann@435: esac yann@553: echo "${VERSION}" yann@435: yann@554: # Now we have the version string, we can buyild up the paths yann@554: [ -z "${BINDIR_set}" ] && BINDIR="${PREFIX}/bin" yann@554: [ -z "${LIBDIR_set}" ] && LIBDIR="${PREFIX}/lib/ct-ng-${VERSION}" yann@554: [ -z "${DOCDIR_set}" ] && DOCDIR="${PREFIX}/share/doc/ct-ng-${VERSION}" yann@554: [ -z "${MANDIR_set}" ] && MANDIR="${PREFIX}/share/man/man1" yann@554: yann@376: # Check bash is present, and at least version 3.0 yann@553: echo -n "Checking bash is at least bash-3.0... " yann@376: [ -x /bin/bash ] || do_error "bash 3.0 or above was not found in /bin/bash" yann@395: bash_version=$(/bin/bash -c 'echo ${BASH_VERSION}') yann@395: bash_major=$(/bin/bash -c 'echo ${BASH_VERSINFO[0]}') yann@411: [ ${bash_major} -ge 3 ] || do_error "bash 3.0 or above is needed (/bin/bash is ${bash_version})" yann@553: echo "ok (${bash_version})" yann@376: yann@553: echo -n "Building up Makefile... " yann@182: sed -r -e "s,@@BINDIR@@,${BINDIR},g;" \ yann@182: -e "s,@@LIBDIR@@,${LIBDIR},g;" \ yann@182: -e "s,@@DOCDIR@@,${DOCDIR},g;" \ yann@182: -e "s,@@MANDIR@@,${MANDIR},g;" \ yann@182: -e "s,@@VERSION@@,${VERSION},g;" \ yann@182: -e "s,@@DATE@@,${DATE},g;" \ yann@285: -e "s,@@LOCAL@@,${LOCAL_set},g;" \ yann@185: Makefile.in >Makefile yann@553: echo "ok" yann@185: yann@185: cat <<__EOF__ yann@197: crosstool-NG configured as follows: yann@554: PREFIX='${PREFIX}' yann@554: BINDIR='${BINDIR}' yann@554: LIBDIR='${LIBDIR}' yann@554: DOCDIR='${DOCDIR}' yann@554: MANDIR='${MANDIR}' yann@185: __EOF__