#!/bin/sh ### autogen.sh - tool to help build Emacs from a bzr checkout ## Copyright (C) 2011 Free Software Foundation, Inc. ## Author: Glenn Morris ## This file is part of GNU Emacs. ## GNU Emacs 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 3 of the License, or ## (at your option) any later version. ## GNU Emacs 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 GNU Emacs. If not, see . ### Commentary: ## The Emacs bzr repository does not include the configure script ## (and associated helpers). The first time you fetch Emacs from bzr, ## run this script to generate the necessary files. ## For more details, see the file INSTALL.BZR. ### Code: ## Tools we need: progs="autoconf automake" ## Minimum versions we need: autoconf_min=`sed -n 's/^ *AC_PREREQ(\([0-9\.]*\)).*/\1/p' configure.in` ## FIXME how to determine this from the sources? automake_min=1.11 ## $1 = program, eg "autoconf". ## Echo the version string, eg "2.59". ## FIXME does not handle things like "1.4a", but AFAIK those are ## all old versions, so it is OK to fail there. ## Also note that we do not handle micro versions. get_version () { $1 --version 2>&1 | sed -n '1 s/.* \([1-9][0-9\.]*\).*/\1/p' } ## $1 = version string, eg "2.59" ## Echo the major version, eg "2". major_version () { echo $1 | sed -e 's/\([0-9][0-9]*\)\..*/\1/' } ## $1 = version string, eg "2.59" ## Echo the minor version, eg "59". minor_version () { echo $1 | sed -e 's/[0-9][0-9]*\.\([0-9][0-9]*\).*/\1/' } ## $1 = program ## $2 = minimum version. ## Return 0 if program is present with version >= minumum version. ## Return 1 if program is missing. ## Return 2 if program is present but too old. ## Return 3 for unexpected error (eg failed to parse version). check_version () { have_version=`get_version $1` [ x"$have_version" = x ] && return 1 have_maj=`major_version $have_version` need_maj=`major_version $2` [ x"$have_maj" != x ] && [ x"$need_maj" != x ] || return 3 [ $have_maj -gt $need_maj ] && return 0 [ $have_maj -lt $need_maj ] && return 2 have_min=`minor_version $have_version` need_min=`minor_version $2` [ x"$have_min" != x ] && [ x"$need_min" != x ] || return 3 [ $have_min -ge $need_min ] && return 0 return 2 } cat <