X-Git-Url: http://git.tremily.us/?a=blobdiff_plain;f=autogen.sh;h=23d672a3004e981ca65b77bb04d676b931be54de;hb=83d88d444eef15e128dd4080d6b1978b4d8657c2;hp=13e4b368d5157c9d237b9302f99192d17be7b098;hpb=f2be4142516bcd9536884bb0e40e8bf561352bd4;p=gpgme.git diff --git a/autogen.sh b/autogen.sh index 13e4b36..23d672a 100755 --- a/autogen.sh +++ b/autogen.sh @@ -1,158 +1,254 @@ -#!/bin/sh -# Run this to generate all the initial makefiles, etc. -# It is only needed for the CVS version. +#! /bin/sh +# Run this to generate all the initial makefiles, etc. +# +# Copyright (C) 2003 g10 Code GmbH +# +# This file is free software; as a special exception the author gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +configure_ac="configure.ac" + +cvtver () { + awk 'NR==1 {split($NF,A,".");X=1000000*A[1]+1000*A[2]+A[3];print X;exit 0}' +} + +check_version () { + if [ `("$1" --version || echo "0") | cvtver` -ge "$2" ]; then + return 0 + fi + echo "**Error**: "\`$1\'" not installed or too old." >&2 + echo ' Version '$3' or newer is required.' >&2 + [ -n "$4" ] && echo ' Note that this is part of '\`$4\''.' >&2 + DIE="yes" + return 1 +} -PGM=GPGME -lib_config_files="" -autoconf_vers=2.13 -automake_vers=1.4 -aclocal_vers=1.4 -libtool_vers=1.3 DIE=no -if test "$1" = "--build-w32"; then +FORCE= +if test x"$1" = x"--force"; then + FORCE=" --force" + shift +fi + +# Begin list of optional variables sourced from ~/.gnupg-autogen.rc +w32_toolprefixes= +w32_extraoptions= +w32ce_toolprefixes= +w32ce_extraoptions= +amd64_toolprefixes= +# End list of optional variables sourced from ~/.gnupg-autogen.rc +# What follows are variables which are sourced but default to +# environment variables or lacking them hardcoded values. +#w32root= +#w32ce_root= +#amd64root= + +if [ -f "$HOME/.gnupg-autogen.rc" ]; then + echo "sourcing extra definitions from $HOME/.gnupg-autogen.rc" + . "$HOME/.gnupg-autogen.rc" +fi + +# Convenience option to use certain configure options for some hosts. +myhost="" +myhostsub="" +case "$1" in + --build-w32) + myhost="w32" + ;; + --build-w32ce) + myhost="w32" + myhostsub="ce" + ;; + --build-amd64) + myhost="amd64" + ;; + --build*) + echo "**Error**: invalid build option $1" >&2 + exit 1 + ;; + *) + ;; +esac + + +# ***** W32 build script ******* +# Used to cross-compile for Windows. +if [ "$myhost" = "w32" ]; then + tmp=`dirname $0` + tsdir=`cd "$tmp"; pwd` shift - target=i386--mingw32 - if [ ! -f ./config.guess ]; then - echo "./config.guess not found" >&2 + if [ ! -f $tsdir/config.guess ]; then + echo "$tsdir/config.guess not found" >&2 exit 1 fi - host=`./config.guess` - - if ! mingw32 --version >/dev/null; then - echo "We need at least version 0.3 of MingW32/CPD" >&2 + build=`$tsdir/config.guess` + + case $myhostsub in + ce) + w32root="$w32ce_root" + [ -z "$w32root" ] && w32root="$HOME/w32ce_root" + toolprefixes="arm-mingw32ce" + ;; + *) + [ -z "$w32root" ] && w32root="$HOME/w32root" + toolprefixes="i586-mingw32msvc i386-mingw32msvc" + ;; + esac + echo "Using $w32root as standard install directory" >&2 + + crossbindir= + for host in $toolprefixes; do + if ${host}-gcc --version >/dev/null 2>&1 ; then + crossbindir=/usr/${host}/bin + conf_CC="CC=${host}-gcc" + break; + fi + done + if [ -z "$crossbindir" ]; then + echo "Cross compiler kit not installed" >&2 + if [ -z "$sub" ]; then + echo "Under Debian GNU/Linux, you may install it using" >&2 + echo " apt-get install mingw32 mingw32-runtime mingw32-binutils" >&2 + fi + echo "Stop." >&2 exit 1 fi - - if [ -f config.h ]; then - if grep HAVE_DOSISH_SYSTEM config.h | grep undef >/dev/null; then + + if [ -f "$tsdir/config.log" ]; then + if ! head $tsdir/config.log | grep "$host" >/dev/null; then echo "Pease run a 'make distclean' first" >&2 exit 1 fi fi - crossinstalldir=`mingw32 --install-dir` - crossbindir=`mingw32 --get-bindir 2>/dev/null` \ - || crossbindir="$crossinstalldir/bin" - crosslibdir=`mingw32 --get-libdir 2>/dev/null` \ - || crosslibdir="$crossinstalldir/i386--mingw32/lib" - crossincdir=`mingw32 --get-includedir 2>/dev/null` \ - || crossincdir="$crossinstalldir/i386--mingw32/include" - CC=`mingw32 --get-path gcc` - CPP=`mingw32 --get-path cpp` - AR=`mingw32 --get-path ar` - RANLIB=`mingw32 --get-path ranlib` - export CC CPP AR RANLIB - - disable_foo_tests="" - if [ -n "$lib_config_files" ]; then - for i in $lib_config_files; do - j=`echo $i | tr '[a-z-]' '[A-Z_]'` - eval "$j=${crossbindir}/$i" - export $j - disable_foo_tests="$disable_foo_tests --disable-`echo $i| \ - sed 's,-config$,,'`-test" - if [ ! -f "${crossbindir}/$i" ]; then - echo "$i not installed for MingW32" >&2 - DIE=yes - fi - done - fi - [ $DIE = yes ] && exit 1 + $tsdir/configure --enable-maintainer-mode --prefix=${w32root} \ + --host=${host} --build=${build} \ + --with-gpg-error-prefix=${w32root} \ + --with-libassuan-prefix=${w32root} "$@" - ./configure --host=${host} --target=${target} ${disable_foo_tests} \ - --bindir=${crossbindir} --libdir=${crosslibdir} \ - --includedir=${crossincdir} $* exit $? fi +# ***** end W32 build script ******* - -if (autoconf --version) < /dev/null > /dev/null 2>&1 ; then - if (autoconf --version | awk 'NR==1 { if( $3 >= '$autoconf_vers') \ - exit 1; exit 0; }'); - then - echo "**Error**: "\`autoconf\'" is too old." - echo ' (version ' $autoconf_vers ' or newer is required)' - DIE="yes" +# ***** AMD64 cross build script ******* +# Used to cross-compile for AMD64 (for testing) +if [ "$myhost" = "amd64" ]; then + tmp=`dirname $0` + tsdir=`cd "$tmp"; pwd` + shift + if [ ! -f $tsdir/config.guess ]; then + echo "$tsdir/config.guess not found" >&2 + exit 1 fi -else - echo - echo "**Error**: You must have "\`autoconf\'" installed to compile $PGM." - echo ' (version ' $autoconf_vers ' or newer is required)' - DIE="yes" -fi - -if (automake --version) < /dev/null > /dev/null 2>&1 ; then - if (automake --version | awk 'NR==1 { if( $4 >= '$automake_vers') \ - exit 1; exit 0; }'); - then - echo "**Error**: "\`automake\'" is too old." - echo ' (version ' $automake_vers ' or newer is required)' - DIE="yes" - fi - if (aclocal --version) < /dev/null > /dev/null 2>&1; then - if (aclocal --version | awk 'NR==1 { if( $4 >= '$aclocal_vers' ) \ - exit 1; exit 0; }' ); - then - echo "**Error**: "\`aclocal\'" is too old." - echo ' (version ' $aclocal_vers ' or newer is required)' - DIE="yes" + build=`$tsdir/config.guess` + + [ -z "$amd64root" ] && amd64root="$HOME/amd64root" + echo "Using $amd64root as standard install directory" >&2 + + # Locate the cross compiler + crossbindir= + for host in x86_64-linux-gnu amd64-linux-gnu; do + if ${host}-gcc --version >/dev/null 2>&1 ; then + crossbindir=/usr/${host}/bin + conf_CC="CC=${host}-gcc" + break; + fi + done + if [ -z "$crossbindir" ]; then + echo "Cross compiler kit not installed" >&2 + echo "Stop." >&2 + exit 1 fi - else - echo - echo "**Error**: Missing "\`aclocal\'". The version of "\`automake\' - echo " installed doesn't appear recent enough." - DIE="yes" - fi -else - echo - echo "**Error**: You must have "\`automake\'" installed to compile $PGM." - echo ' (version ' $automake_vers ' or newer is required)' - DIE="yes" + + if [ -f "$tsdir/config.log" ]; then + if ! head $tsdir/config.log | grep "$host" >/dev/null; then + echo "Please run a 'make distclean' first" >&2 + exit 1 + fi + fi + + $tsdir/configure --enable-maintainer-mode --prefix=${amd64root} \ + --host=${host} --build=${build} + rc=$? + exit $rc fi +# ***** end AMD64 cross build script ******* -if (libtool --version) < /dev/null > /dev/null 2>&1 ; then - if (libtool --version | awk 'NR==1 { if( $4 >= '$libtool_vers') \ - exit 1; exit 0; }'); - then - echo "**Error**: "\`libtool\'" is too old." - echo ' (version ' $libtool_vers ' or newer is required)' - DIE="yes" - fi -else - echo - echo "**Error**: You must have "\`libtool\'" installed to compile $PGM." - echo ' (version ' $libtool_vers ' or newer is required)' - DIE="yes" -fi -if test "$DIE" = "yes"; then - exit 1 +# Grep the required versions from configure.ac +autoconf_vers=`sed -n '/^AC_PREREQ(/ { +s/^.*(\(.*\))/\1/p +q +}' ${configure_ac}` +autoconf_vers_num=`echo "$autoconf_vers" | cvtver` + +automake_vers=`sed -n '/^min_automake_version=/ { +s/^.*="\(.*\)"/\1/p +q +}' ${configure_ac}` +automake_vers_num=`echo "$automake_vers" | cvtver` + +#gettext_vers=`sed -n '/^AM_GNU_GETTEXT_VERSION(/ { +#s/^.*(\(.*\))/\1/p +#q +#}' ${configure_ac}` +#gettext_vers_num=`echo "$gettext_vers" | cvtver` + + +if [ -z "$autoconf_vers" -o -z "$automake_vers" ] +then + echo "**Error**: version information not found in "\`${configure_ac}\'"." >&2 + exit 1 fi -echo "Running libtoolize... Ignore non-fatal messages." -echo "no" | libtoolize +# Allow to override the default tool names +AUTOCONF=${AUTOCONF_PREFIX}${AUTOCONF:-autoconf}${AUTOCONF_SUFFIX} +AUTOHEADER=${AUTOCONF_PREFIX}${AUTOHEADER:-autoheader}${AUTOCONF_SUFFIX} +AUTOMAKE=${AUTOMAKE_PREFIX}${AUTOMAKE:-automake}${AUTOMAKE_SUFFIX} +ACLOCAL=${AUTOMAKE_PREFIX}${ACLOCAL:-aclocal}${AUTOMAKE_SUFFIX} -echo "Running aclocal..." -aclocal -echo "Running autoheader..." -autoheader -echo "Running automake --gnu ..." -automake --gnu; -echo "Running autoconf..." -autoconf - -if test "$*" = ""; then - conf_options="--enable-maintainer-mode" -else - conf_options=$* +#GETTEXT=${GETTEXT_PREFIX}${GETTEXT:-gettext}${GETTEXT_SUFFIX} +#MSGMERGE=${GETTEXT_PREFIX}${MSGMERGE:-msgmerge}${GETTEXT_SUFFIX} + + +if check_version $AUTOCONF $autoconf_vers_num $autoconf_vers ; then + check_version $AUTOHEADER $autoconf_vers_num $autoconf_vers autoconf +fi +if check_version $AUTOMAKE $automake_vers_num $automake_vers; then + check_version $ACLOCAL $automake_vers_num $autoconf_vers automake fi -echo "Running ./configure $conf_options" -./configure $conf_options +#if check_version $GETTEXT $gettext_vers_num $gettext_vers; then +# check_version $MSGMERGE $gettext_vers_num $gettext_vers gettext +#fi +if test "$DIE" = "yes"; then + cat <