Permalink
Browse files

Simplify autogen.sh script; Fixes: GB#566158

  • Loading branch information...
1 parent 4c167a7 commit ee96ed63d6708ca07bcdb4e82fe8cea514fe31a4 @hasselmm committed Jan 9, 2009
Showing with 35 additions and 187 deletions.
  1. +27 −26 INSTALL
  2. +2 −0 Makefile.am
  3. +4 −161 autogen.sh
  4. +2 −0 configure.ac
View
53 INSTALL
@@ -1,16 +1,19 @@
Installation Instructions
*************************
-Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free
-Software Foundation, Inc.
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
+2006, 2007 Free Software Foundation, Inc.
This file is free documentation; the Free Software Foundation gives
unlimited permission to copy, distribute and modify it.
Basic Installation
==================
-These are generic installation instructions.
+Briefly, the shell commands `./configure; make; make install' should
+configure, build, and install this package. The following
+more-detailed instructions are generic; see the `README' file for
+instructions specific to this package.
The `configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses
@@ -23,9 +26,9 @@ debugging `configure').
It can also use an optional file (typically called `config.cache'
and enabled with `--cache-file=config.cache' or simply `-C') that saves
-the results of its tests to speed up reconfiguring. (Caching is
+the results of its tests to speed up reconfiguring. Caching is
disabled by default to prevent problems with accidental use of stale
-cache files.)
+cache files.
If you need to do unusual things to compile the package, please try
to figure out how `configure' could check whether to do them, and mail
@@ -35,20 +38,17 @@ some point `config.cache' contains results you don't want to keep, you
may remove or edit it.
The file `configure.ac' (or `configure.in') is used to create
-`configure' by a program called `autoconf'. You only need
-`configure.ac' if you want to change it or regenerate `configure' using
-a newer version of `autoconf'.
+`configure' by a program called `autoconf'. You need `configure.ac' if
+you want to change it or regenerate `configure' using a newer version
+of `autoconf'.
The simplest way to compile this package is:
1. `cd' to the directory containing the package's source code and type
- `./configure' to configure the package for your system. If you're
- using `csh' on an old version of System V, you might need to type
- `sh ./configure' instead to prevent `csh' from trying to execute
- `configure' itself.
+ `./configure' to configure the package for your system.
- Running `configure' takes awhile. While running, it prints some
- messages telling which features it is checking for.
+ Running `configure' might take a while. While running, it prints
+ some messages telling which features it is checking for.
2. Type `make' to compile the package.
@@ -67,6 +67,9 @@ The simplest way to compile this package is:
all sorts of other programs in order to regenerate files that came
with the distribution.
+ 6. Often, you can also type `make uninstall' to remove the installed
+ files again.
+
Compilers and Options
=====================
@@ -78,7 +81,7 @@ details on some of the pertinent environment variables.
by setting variables in the command line or in the environment. Here
is an example:
- ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
+ ./configure CC=c99 CFLAGS=-g LIBS=-lposix
*Note Defining Variables::, for more details.
@@ -87,17 +90,15 @@ Compiling For Multiple Architectures
You can compile the package for more than one kind of computer at the
same time, by placing the object files for each architecture in their
-own directory. To do this, you must use a version of `make' that
-supports the `VPATH' variable, such as GNU `make'. `cd' to the
+own directory. To do this, you can use GNU `make'. `cd' to the
directory where you want the object files and executables to go and run
the `configure' script. `configure' automatically checks for the
source code in the directory that `configure' is in and in `..'.
- If you have to use a `make' that does not support the `VPATH'
-variable, you have to compile the package for one architecture at a
-time in the source code directory. After you have installed the
-package for one architecture, use `make distclean' before reconfiguring
-for another architecture.
+ With a non-GNU `make', it is safer to compile the package for one
+architecture at a time in the source code directory. After you have
+installed the package for one architecture, use `make distclean' before
+reconfiguring for another architecture.
Installation Names
==================
@@ -190,12 +191,12 @@ them in the `configure' command line, using `VAR=value'. For example:
./configure CC=/usr/local2/bin/gcc
causes the specified `gcc' to be used as the C compiler (unless it is
-overridden in the site shell script). Here is a another example:
+overridden in the site shell script).
- /bin/bash ./configure CONFIG_SHELL=/bin/bash
+Unfortunately, this technique does not work for `CONFIG_SHELL' due to
+an Autoconf bug. Until the bug is fixed you can use this workaround:
-Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent
-configuration-related scripts to be executed by `/bin/bash'.
+ CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
`configure' Invocation
======================
View
@@ -1,3 +1,5 @@
+ACLOCAL_AMFLAGS = -I m4
+
SUBDIRS = libgiggle src data po pixmaps test
INTLTOOL = \
View
@@ -1,163 +1,6 @@
-#!/bin/sh
+#!/bin/sh -e
# Run this to generate all the initial makefiles, etc.
-: ${AUTOCONF=autoconf}
-: ${AUTOHEADER=autoheader}
-: ${AUTOMAKE=automake-1.9}
-: ${ACLOCAL=aclocal-1.9}
-: ${LIBTOOLIZE=libtoolize}
-: ${INTLTOOLIZE=intltoolize}
-: ${LIBTOOL=libtool}
-
-srcdir=`dirname $0`
-test -z "$srcdir" && srcdir=.
-
-ORIGDIR=`pwd`
-cd $srcdir
-PROJECT=giggle
-TEST_TYPE=-f
-FILE=src/giggle-main.c
-CONFIGURE=configure.ac
-
-DIE=0
-
-($AUTOCONF --version) < /dev/null > /dev/null 2>&1 || {
- echo
- echo "You must have autoconf installed to compile $PROJECT."
- echo "Download the appropriate package for your distribution,"
- echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/"
- DIE=1
-}
-
-(grep "^AC_PROG_INTLTOOL" $srcdir/$CONFIGURE >/dev/null) && {
- ($INTLTOOLIZE --version) < /dev/null > /dev/null 2>&1 || {
- echo
- echo "You must have \`intltoolize' installed to compile $PROJECT."
- echo "Get ftp://ftp.gnome.org/pub/GNOME/stable/sources/intltool/intltool-0.22.tar.gz"
- echo "(or a newer version if it is available)"
- DIE=1
- }
-}
-
-($AUTOMAKE --version) < /dev/null > /dev/null 2>&1 || {
- echo
- echo "You must have automake installed to compile $PROJECT."
- echo "Get ftp://sourceware.cygnus.com/pub/automake/automake-1.7.tar.gz"
- echo "(or a newer version if it is available)"
- DIE=1
-}
-
-(grep "^AM_PROG_LIBTOOL" $CONFIGURE >/dev/null) && {
- ($LIBTOOL --version) < /dev/null > /dev/null 2>&1 || {
- echo
- echo "**Error**: You must have \`libtool' installed to compile $PROJECT."
- echo "Get ftp://ftp.gnu.org/pub/gnu/libtool-1.4.tar.gz"
- echo "(or a newer version if it is available)"
- DIE=1
- }
-}
-
-if grep "^AM_[A-Z0-9_]\{1,\}_GETTEXT" "$CONFIGURE" >/dev/null; then
- if grep "sed.*POTFILES" "$CONFIGURE" >/dev/null; then
- GETTEXTIZE=""
- else
- if grep "^AM_GLIB_GNU_GETTEXT" "$CONFIGURE" >/dev/null; then
- GETTEXTIZE="glib-gettextize"
- GETTEXTIZE_URL="ftp://ftp.gtk.org/pub/gtk/v2.0/glib-2.0.0.tar.gz"
- else
- GETTEXTIZE="gettextize"
- GETTEXTIZE_URL="ftp://alpha.gnu.org/gnu/gettext-0.10.35.tar.gz"
- fi
-
- $GETTEXTIZE --version < /dev/null > /dev/null 2>&1
- if test $? -ne 0; then
- echo
- echo "**Error**: You must have \`$GETTEXTIZE' installed to compile $PKG_NAME."
- echo "Get $GETTEXTIZE_URL"
- echo "(or a newer version if it is available)"
- DIE=1
- fi
- fi
-fi
-
-if test "$DIE" -eq 1; then
- exit 1
-fi
-
-test $TEST_TYPE $FILE || {
- echo "You must run this script in the top-level $PROJECT directory"
- exit 1
-}
-
-#if test -z "$*"; then
-# echo "I am going to run ./configure with no arguments - if you wish "
-# echo "to pass any to it, please specify them on the $0 command line."
-#fi
-
-case $CC in
-*xlc | *xlc\ * | *lcc | *lcc\ *) am_opt=--include-deps;;
-esac
-
-for coin in .
-do
- dr=`dirname $coin`
- if test -f $dr/NO-AUTO-GEN; then
- echo skipping $dr -- flagged as no auto-gen
- else
- echo processing $dr
- macrodirs= #`sed -n -e 's,AM_ACLOCAL_INCLUDE(\(.*\)),\1,gp' < $coin`
- ( cd $dr
- aclocalinclude="$ACLOCAL_FLAGS"
- for k in $macrodirs; do
- if test -d $k; then
- aclocalinclude="$aclocalinclude -I $k"
- ##else
- ## echo "**Warning**: No such directory \`$k'. Ignored."
- fi
- done
- if grep "^AM_GLIB_GNU_GETTEXT" $CONFIGURE >/dev/null; then
- if grep "sed.*POTFILES" $CONFIGURE >/dev/null; then
- : do nothing -- we still have an old unmodified configure.in
- else
- echo "Creating $dr/aclocal.m4 ..."
- test -r $dr/aclocal.m4 || touch $dr/aclocal.m4
- echo "Running glib-gettextize... Ignore non-fatal messages."
- echo "no" | glib-gettextize --force --copy
- echo "Making $dr/aclocal.m4 writable ..."
- test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4
- fi
- fi
- if grep "^AC_PROG_INTLTOOL" $CONFIGURE >/dev/null ||
- grep "^IT_PROG_INTLTOOL" $CONFIGURE >/dev/null; then
- echo "Running intltoolize..."
- intltoolize --copy --force --automake
- fi
- if grep "^AM_PROG_LIBTOOL" $CONFIGURE >/dev/null; then
- echo "Running $LIBTOOLIZE..."
- $LIBTOOLIZE --force --copy
- fi
- echo "Running $ACLOCAL $aclocalinclude ..."
- $ACLOCAL $aclocalinclude
- if grep "^AM_CONFIG_HEADER" $CONFIGURE >/dev/null; then
- echo "Running $AUTOHEADER..."
- $AUTOHEADER
- fi
- echo "Running $AUTOMAKE --gnu $am_opt ..."
- $AUTOMAKE --add-missing --gnu $am_opt
- echo "Running $AUTOCONF ..."
- $AUTOCONF
- )
- fi
-done
-
-conf_flags="--enable-maintainer-mode"
-
-cd "$ORIGDIR"
-
-if test x$NOCONFIGURE = x; then
- echo Running $srcdir/configure $conf_flags "$@" ...
- $srcdir/configure $conf_flags "$@" \
- && echo Now type \`make\' to compile $PROJECT || exit 1
-else
- echo Skipping configure process.
-fi
+autoreconf -i -f
+intltoolize -f
+./configure "$@"
View
@@ -3,6 +3,8 @@ AC_PREREQ(2.52)
AC_INIT(giggle,0.4,http://developer.imendio.com/issues/browse/GGL)
AC_CONFIG_SRCDIR(src/giggle-main.c)
+AC_CONFIG_MACRO_DIR([m4])
+
AM_INIT_AUTOMAKE(AC_PACKAGE_NAME, AC_PACKAGE_VERSION)
AM_MAINTAINER_MODE

2 comments on commit ee96ed6

Contributor

guyou replied Jan 21, 2009

I’m quite surprised by such commit. What was wrong with previous implementation?

Owner

hasselmm replied Jan 21, 2009

- Automake 1.10 and automake 1.9 seem to be quite similar as some distributions decided to only ship 1.10, but not 1.9 whilest still shipping many other ancient versions of automake.
- autoreconf does all that this long script does, just better. There is no point in maintaining our own script if there is some recommended command and if that command just works better.
- “—enable-maintainer-mode” just is a horribly stupid idea. Even it’s original author admits. Look automake’s info pages for citation.

Please sign in to comment.