summaryrefslogtreecommitdiffstats
path: root/autogen.sh
diff options
context:
space:
mode:
Diffstat (limited to 'autogen.sh')
-rwxr-xr-xautogen.sh434
1 files changed, 434 insertions, 0 deletions
diff --git a/autogen.sh b/autogen.sh
new file mode 100755
index 0000000..f68d661
--- /dev/null
+++ b/autogen.sh
@@ -0,0 +1,434 @@
+#!/bin/sh
+#
+# autogen.sh - Generates initial makefiles from a pristine source tree
+#
+# USAGE:
+# autogen.sh [configure options]
+#
+# Configuration is affected by environment variables as follows:
+#
+# DRYRUN
+# If set to any value it will do no configuring but will emit the
+# programs that would be run.
+# e.g. DRYRUN=1 ./autogen.sh
+#
+# NOCONFIGURE
+# If set to any value it will generate all files but not invoke the
+# generated configure script.
+# e.g. NOCONFIGURE=1 ./autogen.sh
+#
+# AUTOMAKE ACLOCAL AUTOCONF AUTOHEADER LIBTOOLIZE GTKDOCIZE
+# If set (named after program) then this overrides any searching for
+# the programs on the current PATH.
+# e.g. AUTOMAKE=automake-1.7 ACLOCAL=aclocal-1.7 ./autogen.sh
+#
+# CONFIG_DIR (default ../config)
+# The directory where fresh GNU config.guess and config.sub can be
+# found for automatic copying in-place.
+#
+# PATH
+# Where the programs are searched for
+#
+# SRCDIR (default .)
+# Source directory
+#
+# This script is based on similar scripts used in various tools
+# commonly made available via CVS and used with GNU automake.
+# Try 'locate autogen.sh' on your system and see what you get.
+#
+# This script is in the public domain
+#
+
+# Directory for the sources
+SRCDIR=${SRCDIR-.}
+
+# Where the GNU config.sub, config.guess might be found
+CONFIG_DIR=${CONFIG_DIR-../config}
+
+# GIT sub modules file
+GITMODULES='.gitmodules'
+
+# The programs required for configuring which will be searched for
+# in the current PATH.
+# Set an envariable of the same name in uppercase, to override scan
+#
+programs="automake aclocal autoconf autoheader libtoolize"
+confs=`find . -name configure.ac -print | grep -v /releases/`
+
+gtkdoc_args=
+if grep "^GTK_DOC_CHECK" $confs >/dev/null; then
+ programs="$programs gtkdocize"
+ gtkdoc_args="--enable-gtk-doc"
+fi
+if grep "^AC_CHECK_PROGS.SWIG" $confs >/dev/null; then
+ programs="$programs swig"
+fi
+ltdl_args=
+if grep "^AC_LIBLTDL_" $confs >/dev/null; then
+ ltdl_args="--ltdl"
+fi
+silent_args=
+if grep "^AM_SILENT_RULES" $confs >/dev/null; then
+ silent_args="--enable-silent-rules"
+fi
+
+# Some dependencies for autotools:
+# automake 1.13 requires autoconf 2.65
+# automake 1.12 requires autoconf 2.62
+# automake 1.11 requires autoconf 2.62 (needed for AM_SILENT_RULES)
+automake_min_vers=011102
+aclocal_min_vers=$automake_min_vers
+autoconf_min_vers=026200
+autoheader_min_vers=$autoconf_min_vers
+# libtool 2.2 required for LT_INIT language fix
+libtoolize_min_vers=020200
+gtkdocize_min_vers=010300
+swig_min_vers=010324
+
+# Default program arguments
+automake_args="--gnu --add-missing --force --copy -Wall"
+aclocal_args="-Wall"
+autoconf_args="-Wall"
+libtoolize_args="--force --copy --automake $ltdl_args"
+gtkdocize_args="--copy"
+# --enable-gtk-doc does no harm if it's not available
+configure_args="--enable-maintainer-mode $gtkdoc_args $silent_args"
+
+
+# You should not need to edit below here
+######################################################################
+
+
+# number comparisons may need a C locale
+LANG=C
+LC_NUMERIC=C
+
+
+program=`basename $0`
+
+if test "X$DRYRUN" != X; then
+ DRYRUN=echo
+fi
+
+cat > autogen-get-version.pl <<EOF
+use File::Basename;
+my \$prog=basename \$0;
+die "\$prog: USAGE PATH PROGRAM-NAME\n e.g. \$prog /usr/bin/foo-123 foo\n"
+ unless @ARGV==2;
+
+my(\$path,\$name)=@ARGV;
+exit 0 if !-f \$path;
+die "\$prog: \$path not found\n" if !-r \$path;
+
+# Remove leading g and make it optional for glibtoolize etc.
+my \$mname=\$name; \$mname =~ s/^g//;
+
+my(@vnums);
+for my \$varg (qw(--version -version)) {
+ my \$cmd="\$path \$varg";
+ open(PIPE, "\$cmd 2>&1 |") || next;
+ while(<PIPE>) {
+ chomp;
+ next if @vnums; # drain pipe if we got a vnums
+ # Add optional leading g
+ next unless /^g?\$mname/i;
+ my(\$v)=/(\S+)\$/i; \$v =~ s/-.*\$//;
+ @vnums=grep { defined \$_ && !/^\s*\$/} map { s/\D//g; \$_; } split(/\./, \$v);
+ }
+ close(PIPE);
+ last if @vnums;
+}
+
+@vnums=(@vnums, 0, 0, 0)[0..2];
+\$vn=join('', map { sprintf('%02d', \$_) } @vnums);
+print "\$vn\n";
+exit 0;
+EOF
+
+autogen_get_version="`pwd`/autogen-get-version.pl"
+
+trap "rm -f $autogen_get_version" 0 1 9 15
+
+
+update_prog_version() {
+ dir=$1
+ prog=$2
+
+ # If there exists an envariable PROG in uppercase, use that and do not scan
+ ucprog=`echo $prog | tr 'a-z' 'A-Z' `
+ eval env=\$${ucprog}
+ if test X$env != X; then
+ prog_name=$env
+ prog_vers=`perl $autogen_get_version $prog_name $prog`
+
+ if test X$prog_vers = X; then
+ prog_vers=0
+ fi
+ eval ${prog}_name=${prog_name}
+ eval ${prog}_vers=${prog_vers}
+ eval ${prog}_dir=environment
+ return
+ fi
+
+ eval prog_name=\$${prog}_name
+ eval prog_vers=\$${prog}_vers
+ eval prog_dir=\$${prog}_dir
+ if test X$prog_vers = X; then
+ prog_vers=0
+ fi
+
+ save_PATH="$PATH"
+
+ cd "$dir"
+ PATH=".:$PATH"
+
+ nameglob="$prog*"
+ if [ -x /usr/bin/uname ]; then
+ if [ `/usr/bin/uname` = 'Darwin' -a $prog = 'libtoolize' ] ; then
+ nameglob="g$nameglob"
+ fi
+ fi
+ names=`ls $nameglob 2>/dev/null`
+ if [ "X$names" != "X" ]; then
+ for name in $names; do
+ vers=`perl $autogen_get_version $dir/$name $prog`
+ if [ "X$vers" = "X" ]; then
+ continue
+ fi
+
+ if expr $vers '>' $prog_vers >/dev/null; then
+ prog_name=$name
+ prog_vers=$vers
+ prog_dir="$dir"
+ fi
+ done
+ fi
+
+ eval ${prog}_name=${prog_name}
+ eval ${prog}_vers=${prog_vers}
+ eval ${prog}_dir=${prog_dir}
+
+ PATH="$save_PATH"
+}
+
+
+check_prog_version() {
+ prog=$1
+
+ eval min=\$${prog}_min_vers
+
+ eval prog_name=\$${prog}_name
+ eval prog_vers=\$${prog}_vers
+ eval prog_dir=\$${prog}_dir
+
+ echo "$program: $prog program '$prog_name' V $prog_vers (min $min) in $prog_dir" 1>&2
+
+ rc=1
+ if test $prog_vers != 0; then
+ if expr $prog_vers '<' $min >/dev/null; then
+ echo "$program: ERROR: \`$prog' version $prog_vers in $prog_dir is too old."
+ echo " (version $min or newer is required)"
+ rc=0
+ else
+ # Things are ok, so set the ${prog} name
+ eval ${prog}=${prog_name}
+ fi
+ else
+ echo "$program: ERROR: You must have \`$prog' installed to compile this package."
+ echo " (version $min or newer is required)"
+ rc=0
+ fi
+
+ return $rc
+}
+
+
+# Find newest version of programs in the current PATH
+save_args=${1+"$*"}
+save_ifs="$IFS"
+IFS=":"
+set - $PATH
+IFS="$save_ifs"
+
+echo "$program: Looking for programs: $programs"
+
+here=`pwd`
+while [ $# -ne 0 ] ; do
+ dir=$1
+ shift
+ if [ ! -d "$dir" ]; then
+ continue
+ fi
+
+ for prog in $programs; do
+ update_prog_version "$dir" $prog
+ done
+done
+cd $here
+
+set - $save_args
+# END Find programs
+
+
+# Check the versions meet the requirements
+for prog in $programs; do
+ if check_prog_version $prog; then
+ exit 1
+ fi
+done
+
+echo "$program: Dependencies satisfied"
+
+if test -d $SRCDIR/libltdl; then
+ touch $SRCDIR/libltdl/NO-AUTO-GEN
+fi
+
+config_dir=
+if test -d $CONFIG_DIR; then
+ config_dir=`cd $CONFIG_DIR; pwd`
+fi
+
+
+# Initialise and/or update GIT submodules
+if test -f $GITMODULES ; then
+ echo " "
+ modules=`sed -n -e 's/^.*path = \(.*\)/\1/p' $GITMODULES`
+ for module in $modules; do
+ if test `ls -1 $module | wc -l` -eq 0; then
+ echo "$program: Initializing git submodule in $module"
+ $DRYRUN git submodule init $module
+ fi
+ done
+ echo "$program: Updating git submodules: $modules"
+ $DRYRUN git submodule update
+fi
+
+for coin in `find $SRCDIR -name configure.ac -print | grep -v /releases/`
+do
+ status=0
+ dir=`dirname $coin`
+ if test -f "$dir/NO-AUTO-GEN"; then
+ echo "$program: Skipping $dir -- flagged as no auto-generation"
+ else
+ echo " "
+ echo $program: Processing directory $dir
+ ( cd "$dir"
+
+ # Ensure that these are created by the versions on this system
+ # (indirectly via automake)
+ $DRYRUN rm -f ltconfig ltmain.sh libtool stamp-h*
+ # Made by automake
+ $DRYRUN rm -f missing depcomp
+ # automake junk
+ $DRYRUN rm -rf autom4te*.cache
+
+ config_macro_dir=`sed -ne 's/^AC_CONFIG_MACRO_DIR(\([^)]*\).*/\1/p' configure.ac`
+ if test "X$config_macro_dir" = X; then
+ config_macro_dir=.
+ else
+ aclocal_args="$aclocal_args -I $config_macro_dir "
+ fi
+
+ config_aux_dir=`sed -ne 's/^AC_CONFIG_AUX_DIR(\([^)]*\).*/\1/p' configure.ac`
+ if test "X$config_aux_dir" = X; then
+ config_aux_dir=.
+ fi
+
+ if test "X$config_dir" != X; then
+ echo "$program: Updating config.guess and config.sub"
+ for file in config.guess config.sub; do
+ cfile=$config_dir/$file
+ xfile=$config_aux_dir/$file
+ if test -f $cfile; then
+ $DRYRUN rm -f $xfile
+ $DRYRUN cp -p $cfile $xfile
+ fi
+ done
+ fi
+
+ echo "$program: Running $libtoolize $libtoolize_args"
+ $DRYRUN rm -f ltmain.sh libtool
+ eval $DRYRUN $libtoolize $libtoolize_args
+ status=$?
+ if test $status != 0; then
+ break
+ fi
+
+ if grep "^GTK_DOC_CHECK" configure.ac >/dev/null; then
+ # gtkdocize junk
+ $DRYRUN rm -rf gtk-doc.make
+ echo "$program: Running $gtkdocize $gtkdocize_args"
+ $DRYRUN $gtkdocize $gtkdocize_args
+ status=$?
+ if test $status != 0; then
+ break
+ fi
+ fi
+
+ for docs in NEWS README; do
+ if test ! -f $docs; then
+ echo "$program: Creating empty $docs file to allow configure to work"
+ $DRYRUN touch -t 200001010000 $docs
+ fi
+ done
+
+ echo "$program: Running $aclocal $aclocal_args"
+ $DRYRUN $aclocal $aclocal_args
+ if grep "^A[CM]_CONFIG_HEADER" configure.ac >/dev/null; then
+ echo "$program: Running $autoheader"
+ $DRYRUN $autoheader
+ status=$?
+ if test $status != 0; then
+ break
+ fi
+ fi
+ echo "$program: Running $automake $automake_args"
+ $DRYRUN $automake $automake_args
+ status=$?
+ if test $status != 0; then
+ break
+ fi
+
+ echo "$program: Running $autoconf $autoconf_args"
+ $DRYRUN $autoconf $autoconf_args
+ status=$?
+ if test $status != 0; then
+ break
+ fi
+ )
+ fi
+
+ if test $status != 0; then
+ echo "$program: FAILED to configure $dir"
+ exit $status
+ fi
+
+done
+
+
+
+rm -f config.cache
+
+AUTOMAKE=$automake
+AUTOCONF=$autoconf
+ACLOCAL=$aclocal
+export AUTOMAKE AUTOCONF ACLOCAL
+
+if test "X$NOCONFIGURE" = X; then
+ echo " "
+ if test -z "$*"; then
+ echo "$program: WARNING: Running \`configure' with no arguments."
+ echo "If you wish to pass any to it, please specify them on the"
+ echo "\`$program' command line."
+ fi
+
+ echo "$program: Running ./configure $configure_args $@"
+ if test "X$DRYRUN" = X; then
+ $DRYRUN ./configure $configure_args "$@" \
+ && echo "$program: Now type \`make' to compile this package" || exit 1
+ else
+ $DRYRUN ./configure $configure_args "$@"
+ fi
+fi
+
+exit $status