grim/guifications3

Parents 3f190e17d6b1
Children c371ee2d14f4
simple working modular autogen, still needs work to allow overriding of default command flags as well as platform specific stuff
--- a/gflib/autogen.sh Tue Sep 08 00:07:07 2009 -0500
+++ b/gflib/autogen.sh Tue Sep 08 02:16:11 2009 -0500
@@ -15,176 +15,12 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-###############################################################################
-# Usage
-###############################################################################
-# This script uses a config file that can be used to stash common arguments
-# passed to configure or environment variables that need to be set before
-# configure is called. The configuration file is a simple shell script that
-# gets sourced.
-#
-# By default, the config file that is used is named 'autogen.args'. This can
-# be configured below.
-#
-# Available options that are handled are as follow:
-# ACLOCAL_FLAGS - command line arguments to pass to aclocal
-# AUTOCONF_FLAGS - command line arguments to pass to autoconf
-# AUTOHEADER_FLAGS - command line arguments to pass to autoheader
-# AUTOMAKE_FLAGS - command line arguments to pass to automake flags
-# CONFIGURE_FLAGS - command line arguments to pass to configure
-# GTKDOCIZE_FLAGS - command line arguments to pass to gtkdocize
-# INTLTOOLIZE_FLAGS - command line arguments to pass to intltoolize
-# LIBTOOLIZE_FLAGS - command line arguments to pass to libtoolize
-#
-# Other helpfull notes:
-# If you're using a different c compiler, you can override the environment
-# variable in 'autogen.args'. For example, say you're using distcc, just add
-# the following to 'autogen.args':
-#
-# CC="distcc"
-#
-# This will work for any influential environment variable to configure.
-###############################################################################
-
-###############################################################################
-# default values for variables
-###############################################################################
PACKAGE="gflib"
-ARGS_FILE="autogen.args"
-
-LIBTOOLIZE_CMD="libtoolize"
-LIBTOOLIZE_FLAGS="-c -f --automake"
-
-INTLTOOLIZE_CMD="intltoolize"
-INTLTOOLIZE_FLAGS="-c -f --automake"
-
-GTKDOCIZE_CMD="gtkdocize"
-GTKDOCIZE_FLAGS="--copy"
-
-ACLOCAL_CMD="aclocal"
-ACLOCAL_FLAGS=""
-
-AUTOHEADER_CMD="autoheader"
-AUTOHEADER_FLAGS=""
-
-AUTOMAKE_CMD="automake"
-AUTOMAKE_FLAGS="-a -c -f --gnu"
-
-AUTOCONF_CMD="autoconf"
-AUTOCONF_FLAGS="-f"
-
-###############################################################################
-# Some platform specific fun
-###############################################################################
-case $(uname -s) in
- Darwin*)
- LIBTOOLIZE_CMD="glibtoolize"
-
- ACLOCAL_FLAGS="${ACLOCAL_FLAGS} -I /sw/share/aclocal/"
- ;;
- *)
-esac
-
-###############################################################################
-# Some helper functions
-###############################################################################
-check () {
- CMD=$1
-
- printf "checking for ${CMD}... "
- BIN=`which ${CMD}`
-
- if [ x"${BIN}" = x"" ] ; then
- echo "not found."
- echo "${CMD} is required to build ${PACKAGE}!"
- exit 1;
- fi
-
- echo "${BIN}"
-}
-
-run_or_die () { # beotch
- CMD=$1
- shift
-
- # we need to make sure to use a six-character template because some versions
- # of mktemp blow up on anything shorter or longer.
- OUTPUT=`mktemp autogen-XXXXXX`
-
- # we have to stash ${@} into a variable, otherwise printf has "issues" if
- # ${@} was expanded from a variable. Fortunately, this lets us clean up
- # the output a bit too.
- ARGS="${@}"
- if [ x"${ARGS}" != x"" ] ; then
- ARGS=" ${ARGS}"
- fi
+. gflib-autogen.sh
- printf "running '${CMD}${ARGS}' ... "
- ${CMD} ${@} >${OUTPUT} 2>&1
-
- if [ $? != 0 ] ; then
- echo "failed."
- cat ${OUTPUT}
- rm -f ${OUTPUT}
- exit 1
- else
- echo "done."
- cat ${OUTPUT}
-
- rm -f ${OUTPUT}
- fi
-}
-
-###############################################################################
-# We really start here, yes, very sneaky!
-###############################################################################
-FIGLET=`which figlet`
-if [ x"${FIGLET}" != x"" ] ; then
- ${FIGLET} ${PACKAGE}
- echo "build system is being generated"
-else
- echo "autogenerating build system for '${PACKAGE}'"
-fi
+add_default_commands
+add_command "gtkdocize" "--copy"
-###############################################################################
-# Look for our args file
-###############################################################################
-printf "checking for %s: " ${ARGS_FILE}
-if [ -f ${ARGS_FILE} ] ; then
- echo "found."
- printf "sourcing ${ARGS_FILE}: "
- . autogen.args
- echo "done."
-else
- echo "not found."
-fi
+autogen
-###############################################################################
-# Check for our required helpers
-###############################################################################
-check "${LIBTOOLIZE_CMD}"; LIBTOOLIZE=${BIN};
-check "${INTLTOOLIZE_CMD}"; INTLTOOLIZE=${BIN};
-check "${GTKDOCIZE_CMD}"; GTKDOCIZE=${BIN};
-check "${ACLOCAL_CMD}"; ACLOCAL=${BIN};
-check "${AUTOHEADER_CMD}"; AUTOHEADER=${BIN};
-check "${AUTOMAKE_CMD}"; AUTOMAKE=${BIN};
-check "${AUTOCONF_CMD}"; AUTOCONF=${BIN};
-
-###############################################################################
-# Run all of our helpers
-###############################################################################
-run_or_die ${LIBTOOLIZE} ${LIBTOOLIZE_FLAGS}
-run_or_die ${INTLTOOLIZE} ${INTLTOOLIZE_FLAGS}
-run_or_die ${GTKDOCIZE} ${GTKDOCIZE_FLAGS}
-run_or_die ${ACLOCAL} ${ACLOCAL_FLAGS}
-run_or_die ${AUTOHEADER} ${AUTOHEADER_FLAGS}
-run_or_die ${AUTOMAKE} ${AUTOMAKE_FLAGS}
-run_or_die ${AUTOCONF} ${AUTOCONF_FLAGS}
-
-###############################################################################
-# Run configure
-###############################################################################
-echo "running ./configure ${CONFIGURE_ARGS} $@"
-./configure ${CONFIGURE_ARGS} $@
-
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/gflib/gflib-autogen.sh Tue Sep 08 02:16:11 2009 -0500
@@ -0,0 +1,146 @@
+#!/bin/sh
+# Guifications - The end-all, be-all notification framework
+# Copyright (C) 2003-2009 Gary Kramlich <grim@reaperworld.com>
+#
+# This program 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.
+#
+# This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
+
+###############################################################################
+# Some helper functions
+###############################################################################
+add_command () {
+ CMD=${1}
+ shift
+
+ # we need to make sure to entry something into the array for args even if
+ # it's empty. If it is, we set it to NONE, which we check for later
+ ARGS="${@}"
+ test "${ARGS}" || ARGS="NONE"
+
+ # add command and flags to our arrays
+ COMMANDS=( "${COMMANDS[@]}" "${CMD}" )
+ FLAGS=( "${FLAGS[@]}" "${ARGS}" )
+}
+
+check_config_file() {
+ test "${ARGS_FILE}" || ARGS_FILE="autogen.args"
+
+ printf "checking for argument file %s: " ${ARGS_FILE}
+
+ if test -f ${ARGS_FILE} ; then
+ echo "found."
+
+ printf "sourcing %s " ${ARGS_FILE}
+ . ${ARGS_FILE}
+ echo "done."
+ else
+ echo "not found."
+ fi
+}
+
+check_command () {
+ CMD=$1
+
+ printf "checking for ${CMD}... "
+ BIN=`which ${CMD}`
+
+ if [ x"${BIN}" = x"" ] ; then
+ echo "not found."
+ echo "${CMD} is required to build ${PACKAGE}!"
+ exit 1;
+ fi
+
+ echo "${BIN}"
+}
+
+check_commands () {
+ for i in `seq 0 $(( ${#COMMANDS[*]} - 1 ))` ; do
+ check_command ${COMMANDS[${i}]}
+ done
+}
+
+run_command () {
+ CMD=$1
+ shift
+
+ # we need to make sure to use a six-character template because some versions
+ # of mktemp blow up on anything shorter or longer.
+ OUTPUT=`mktemp autogen-XXXXXX`
+
+ # we have to stash ${@} into a variable, otherwise printf has "issues" if
+ # ${@} was expanded from a variable. Fortunately, this lets us clean up
+ # the output a bit too.
+ ARGS="${@}"
+ if [ x"${ARGS}" != x"" ] ; then
+ ARGS=" ${ARGS}"
+ fi
+
+ printf "running '${CMD}${ARGS}' ... "
+ ${CMD} ${@} >${OUTPUT} 2>&1
+
+ if [ $? != 0 ] ; then
+ echo "failed."
+ cat ${OUTPUT}
+ rm -f ${OUTPUT}
+ exit 1
+ else
+ echo "done."
+ cat ${OUTPUT}
+
+ rm -f ${OUTPUT}
+ fi
+}
+
+run_commands () {
+ for i in `seq 0 $(( ${#COMMANDS[*]} - 1 ))` ; do
+ ARGS=${FLAGS[${i}]}
+ test "${ARGS}" = "NONE" && ARGS=""
+
+ run_command ${COMMANDS[${i}]} ${ARGS}
+ done
+}
+
+run_configure () {
+ echo "running configure ${@}..."
+ ./configure ${CONFIGURE_FLAGS} ${@}
+}
+
+add_default_commands () {
+ add_command "libtoolize" "-c -f --automake"
+ add_command "intltoolize" "-c -f --automake"
+ add_command "aclocal"
+ add_command "autoheader"
+ add_command "automake" "-a -c -f --gnu"
+ add_command "autoconf" "-f"
+}
+
+###############################################################################
+# API
+###############################################################################
+autogen() {
+ FIGLET=`which figlet`
+ if [ x"${FIGLET}" != x"" ] ; then
+ ${FIGLET} ${PACKAGE}
+ echo "build system is being generated"
+ else
+ echo "autogenerating build system for '${PACKAGE}'"
+ fi
+
+ check_config_file
+
+ check_commands
+ run_commands
+
+ run_configure ${@}
+}
+