# http://www.xs4all.nl/~evbergen/nonrecursive-make.html
#
-#
-# Define some options.
-#
-
-# Set this to `yes' to echo each build command.
-verbose := no
+# Set this to `yes' to echo each build command in full.
+verbose := no
#
# Include the configuration file, config.mk.
#
+SHELL := /bin/sh
+
have_config := $(wildcard config.mk)
ifneq ($(strip $(have_config)),)
include config.mk
else
no_config:
- @echo "You must run the configure script before you can make anything."
- @exit 1
+ $(error You must run the configure script before you can make anything)
endif
#
-# Some standard stuff.
+# Declare the default targets and implicit rules.
#
+.PHONY: all
+all: all_
+
.SUFFIXES:
-.SUFFIXES: .a .c .cc .cpp .o .rc
+.SUFFIXES: .a .c .cc .cpp .in .o .rc
+
+
+#
+# Define some useful functions.
+#
-all: targets
+add_exe_suffix = $(addsuffix $(EXEEXT),$1)
+remove_silencer = $(1:@%=%)
#
CC_WRAPPER = ./build/compile.sh $(CC)
CXX_WRAPPER = ./build/compile.sh $(CXX)
-ifeq ($(verbose),no)
-DO_CC = @echo " CC $@";
-DO_CXX = @echo " CXX $@";
-DO_LD = @echo " LD $@";
-DO_LDX = @echo " LD $@";
-DO_CCLD = @echo " CCLD $@";
-DO_CXXLD = @echo " CXXLD $@";
-DO_AR = @echo " AR $@";
-DO_RC = @echo " RC $@";
+COMMAND_CC = $(CC_WRAPPER) $(CFLAGS) $(CF_TGT) -o $@ -c $<
+COMMAND_CXX = $(CXX_WRAPPER) $(CXXFLAGS) $(CF_TGT) -o $@ -c $<
+COMMAND_LD = $(CC) $(LDFLAGS) $(LF_TGT) -o $@ $^ $(LL_TGT) $(LIBS)
+COMMAND_LDX = $(CXX) $(LDFLAGS) $(LF_TGT) -o $@ $^ $(LL_TGT) $(LIBS)
+COMMAND_CCLD = $(CC_WRAPPER) $(CFLAGS) $(CF_TGT) $(LDFLAGS) $(LF_TGT) -o $@ $< $(LL_TGT) $(LIBS)
+COMMAND_CXXLD = $(CXX_WRAPPER) $(CXXFLAGS) $(CF_TGT) $(LDFLAGS) $(LF_TGT) -o $@ $< $(LL_TGT) $(LIBS)
+COMMAND_AR = $(AR) rcs $@ $^; $(RANLIB) $@
+COMMAND_RC = $(WINDRES) $(DDEFINES) $(DF_TGT) -o $@ -i $<
+COMMAND_INSTALL = ./build/install.sh -m $1 $2 -d $3
+COMMAND_RM = rm -f $1
+COMMAND_IN = ./build/process.sh $1 $2
+
+ifeq ($(verbose),yes)
+DO_CC = $(COMMAND_CC)
+DO_CXX = $(COMMAND_CXX)
+DO_LD = $(COMMAND_LD)
+DO_LDX = $(COMMAND_LDX)
+DO_CCLD = $(COMMAND_CCLD)
+DO_CXXLD = $(COMMAND_CXXLD)
+DO_AR = $(COMMAND_AR)
+DO_RC = $(COMMAND_RC)
+DO_INSTALL = $(COMMAND_INSTALL)
+DO_RM = $(COMMAND_RM)
+DO_IN = $(COMMAND_IN)
+SHELL_LINE_PREFIX =
+else
+DO_CC = @echo -e " CC \t$@"; $(COMMAND_CC)
+DO_CXX = @echo -e " CXX \t$@"; $(COMMAND_CXX)
+DO_LD = @echo -e " LD \t$@"; $(COMMAND_LD)
+DO_LDX = @echo -e " LD \t$@"; $(COMMAND_LDX)
+DO_CCLD = @echo -e " CCLD \t$@"; $(COMMAND_CCLD)
+DO_CXXLD = @echo -e " CXXLD \t$@"; $(COMMAND_CXXLD)
+DO_AR = @echo -e " AR \t$@"; $(COMMAND_AR)
+DO_RC = @echo -e " RC \t$@"; $(COMMAND_RC)
+DO_INSTALL = @echo -e " CP \t$2"; $(COMMAND_INSTALL)
+DO_RM = @echo -e " RM \t$1"; $(COMMAND_RM)
+DO_IN = @echo -e " MAKE \t$2"; $(COMMAND_IN)
+SHELL_LINE_PREFIX = @
endif
-DO_CC += $(CC_WRAPPER) $(CFLAGS) $(CF_TGT) -o $@ -c $<
-DO_CXX += $(CXX_WRAPPER) $(CXXFLAGS) $(CF_TGT) -o $@ -c $<
-DO_LD += $(CC_WRAPPER) $(LDFLAGS) $(LF_TGT) -o $@ $^ $(LL_TGT) $(LIBS)
-DO_LDX += $(CXX_WRAPPER) $(LDFLAGS) $(LF_TGT) -o $@ $^ $(LL_TGT) $(LIBS)
-DO_CCLD += $(CC_WRAPPER) $(CFLAGS) $(CF_TGT) $(LDFLAGS) $(LF_TGT) -o $@ $< $(LL_TGT) $(LIBS)
-DO_CXXLD += $(CXX_WRAPPER) $(CXXFLAGS) $(CF_TGT) $(LDFLAGS) $(LF_TGT) -o $@ $< $(LL_TGT) $(LIBS)
-DO_AR += $(AR) rcs $@ $^; $(RANLIB) $@
-DO_RC += $(WINDRES) $(DDEFINES) $(DF_TGT) -o $@ -i $<
+
+#
+# Define the implicit rules.
+#
%.o: %.c
$(DO_CC)
$(DO_CXXLD)
%.a: %.o
$(DO_AR)
-
-
-#
-# Stuff.
-#
-
-#TGT_BIN := $(addsuffix $(EXEEXT),$(TGT_BIN))
+%: %.in
+ $(call DO_IN,$<,$@)
#
# Define the phony targets.
#
-.PHONY: targets
-targets: $(TGT_BIN) $(TGT_LIB)
-
.PHONY: clean
clean:
-ifeq ($(verbose),yes)
- rm -f $(CLEAN)
-else
- @echo " CLEAN"; rm -f $(CLEAN)
-endif
+ $(SHELL_LINE_PREFIX)files='$(CLEAN)'; for file in $$files; \
+ do \
+ $(call remove_silencer,$(call DO_RM,$$file)); \
+ done
.PHONY: distclean
distclean: clean
-ifeq ($(verbose),yes)
- rm -f config.mk
-else
- @rm -f config.mk
-endif
+ $(call DO_RM,config.mk)
+
+.PHONY: all_
+all_: $(BINARIES) $(MANPAGES)
.PHONY: install
-install: targets
- $(INSTALL) $(TGT_BIN) -m 755 -d $(DESTDIR)$(bindir)
- $(INSTALL) $(TGT_DATA) -m 644 -d $(DESTDIR)$(datadir)
- $(INSTALL) $(TGT_LIB) -m 750 -d $(DESTDIR)$(libdir)
- $(INSTALL) $(TGT_MAN) -m 644 -d $(DESTDIR)$(mandir)
+install: all
+ $(SHELL_LINE_PREFIX)files='$(DATAFILES)'; for file in $$files; \
+ do \
+ full=`echo "$$file" | cut -d\; -f1`; \
+ base=`echo "$$file" | cut -d\; -f2`; \
+ $(call remove_silencer,$(call DO_INSTALL,644,$$full,$(DESTDIR)$(datadir)$$base)); \
+ done
+ $(SHELL_LINE_PREFIX)files='$(BINARIES)'; for file in $$files; \
+ do \
+ $(call remove_silencer,$(call DO_INSTALL,755,$$file,$(DESTDIR)$(bindir))); \
+ done
+ $(SHELL_LINE_PREFIX)files='$(MANPAGES)'; for file in $$files; \
+ do \
+ $(call remove_silencer,$(call DO_INSTALL,644,$$file,$(DESTDIR)$(mandir))); \
+ done
+
+.PHONY: uninstall
+uninstall:
+ $(SHELL_LINE_PREFIX)files='$(BINARIES)'; for file in $$files; \
+ do \
+ base="/`basename $$file`"; \
+ $(call remove_silencer,$(call DO_RM,$(DESTDIR)$(bindir)$$base)); \
+ done
+ $(SHELL_LINE_PREFIX)files='$(DATAFILES)'; for file in $$files; \
+ do \
+ full="`echo "$$file" | cut -d\; -f1`"; \
+ base="`echo "$$file" | cut -d\; -f2`/`basename $$full`"; \
+ $(call remove_silencer,$(call DO_RM,$(DESTDIR)$(datadir)$$base)); \
+ done
#
+++ /dev/null
-
-ACLOCAL_AMFLAGS = -I m4
-
-SUBDIRS = data src
-EXTRA_DIST = autogen.sh doc
-
-man6_MANS = doc/yoink.6
-
-
-.PHONY: run debug portable installer package
-
-if WIN32
-
-portable: all
- $(SH) arch/win32/makepackage.sh -p $(prefix) -d "@DATA_FILES@" \
- -s $(STRIP) -V $(VERSION)
-
-if HAVE_MAKENSIS
-
-installer: all
- $(SH) arch/win32/makepackage.sh -p $(prefix) -d "@DATA_FILES@" \
- -s $(STRIP) -V $(VERSION) -i $(MAKENSIS)
-
-endif
-
-else
-
-run: all
- @cd src && $(MAKE) run
-
-debug: all
- @cd src && $(MAKE) debug
-
-endif
-
-if NETBSD
-
-package: all
- $(SH) arch/netbsd/makepackage.sh
-
-endif
-
+++ /dev/null
-#!/bin/sh
-# a u t o g e n . s h
-#
-# Copyright (c) 2005-2009 United States Government as represented by
-# the U.S. Army Research Laboratory.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# 2. Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following
-# disclaimer in the documentation and/or other materials provided
-# with the distribution.
-#
-# 3. The name of the author may not be used to endorse or promote
-# products derived from this software without specific prior written
-# permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
-# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-###
-#
-# Script for automatically preparing the sources for compilation by
-# performing the myriad of necessary steps. The script attempts to
-# detect proper version support, and outputs warnings about particular
-# systems that have autotool peculiarities.
-#
-# Basically, if everything is set up and installed correctly, the
-# script will validate that minimum versions of the GNU Build System
-# tools are installed, account for several common configuration
-# issues, and then simply run autoreconf for you.
-#
-# If autoreconf fails, which can happen for many valid configurations,
-# this script proceeds to run manual preparation steps effectively
-# providing a POSIX shell script (mostly complete) reimplementation of
-# autoreconf.
-#
-# The AUTORECONF, AUTOCONF, AUTOMAKE, LIBTOOLIZE, ACLOCAL, AUTOHEADER
-# environment variables and corresponding _OPTIONS variables (e.g.
-# AUTORECONF_OPTIONS) may be used to override the default automatic
-# detection behaviors. Similarly the _VERSION variables will override
-# the minimum required version numbers.
-#
-# Examples:
-#
-# To obtain help on usage:
-# ./autogen.sh --help
-#
-# To obtain verbose output:
-# ./autogen.sh --verbose
-#
-# To skip autoreconf and prepare manually:
-# AUTORECONF=false ./autogen.sh
-#
-# To verbosely try running with an older (unsupported) autoconf:
-# AUTOCONF_VERSION=2.50 ./autogen.sh --verbose
-#
-# Author:
-# Christopher Sean Morrison <morrison@brlcad.org>
-#
-# Patches:
-# Sebastian Pipping <sebastian@pipping.org>
-#
-######################################################################
-
-# set to minimum acceptable version of autoconf
-if [ "x$AUTOCONF_VERSION" = "x" ] ; then
- AUTOCONF_VERSION=2.52
-fi
-# set to minimum acceptable version of automake
-if [ "x$AUTOMAKE_VERSION" = "x" ] ; then
- AUTOMAKE_VERSION=1.6.0
-fi
-# set to minimum acceptable version of libtool
-if [ "x$LIBTOOL_VERSION" = "x" ] ; then
- LIBTOOL_VERSION=1.4.2
-fi
-
-
-##################
-# ident function #
-##################
-ident ( ) {
- # extract copyright from header
- __copyright="`grep Copyright $AUTOGEN_SH | head -${HEAD_N}1 | awk '{print $4}'`"
- if [ "x$__copyright" = "x" ] ; then
- __copyright="`date +%Y`"
- fi
-
- # extract version from CVS Id string
- __id="$Id: autogen.sh 33925 2009-03-01 23:27:06Z brlcad $"
- __version="`echo $__id | sed 's/.*\([0-9][0-9][0-9][0-9]\)[-\/]\([0-9][0-9]\)[-\/]\([0-9][0-9]\).*/\1\2\3/'`"
- if [ "x$__version" = "x" ] ; then
- __version=""
- fi
-
- echo "autogen.sh build preparation script by Christopher Sean Morrison"
- echo " + config.guess download patch by Sebastian Pipping (2008-12-03)"
- echo "revised 3-clause BSD-style license, copyright (c) $__copyright"
- echo "script version $__version, ISO/IEC 9945 POSIX shell script"
-}
-
-
-##################
-# USAGE FUNCTION #
-##################
-usage ( ) {
- echo "Usage: $AUTOGEN_SH [-h|--help] [-v|--verbose] [-q|--quiet] [-d|--download] [--version]"
- echo " --help Help on $NAME_OF_AUTOGEN usage"
- echo " --verbose Verbose progress output"
- echo " --quiet Quiet suppressed progress output"
- echo " --download Download the latest config.guess from gnulib"
- echo " --version Only perform GNU Build System version checks"
- echo
- echo "Description: This script will validate that minimum versions of the"
- echo "GNU Build System tools are installed and then run autoreconf for you."
- echo "Should autoreconf fail, manual preparation steps will be run"
- echo "potentially accounting for several common preparation issues. The"
-
- echo "AUTORECONF, AUTOCONF, AUTOMAKE, LIBTOOLIZE, ACLOCAL, AUTOHEADER,"
- echo "PROJECT, & CONFIGURE environment variables and corresponding _OPTIONS"
- echo "variables (e.g. AUTORECONF_OPTIONS) may be used to override the"
- echo "default automatic detection behavior."
- echo
-
- ident
-
- return 0
-}
-
-
-##########################
-# VERSION_ERROR FUNCTION #
-##########################
-version_error ( ) {
- if [ "x$1" = "x" ] ; then
- echo "INTERNAL ERROR: version_error was not provided a version"
- exit 1
- fi
- if [ "x$2" = "x" ] ; then
- echo "INTERNAL ERROR: version_error was not provided an application name"
- exit 1
- fi
- $ECHO
- $ECHO "ERROR: To prepare the ${PROJECT} build system from scratch,"
- $ECHO " at least version $1 of $2 must be installed."
- $ECHO
- $ECHO "$NAME_OF_AUTOGEN does not need to be run on the same machine that will"
- $ECHO "run configure or make. Either the GNU Autotools will need to be installed"
- $ECHO "or upgraded on this system, or $NAME_OF_AUTOGEN must be run on the source"
- $ECHO "code on another system and then transferred to here. -- Cheers!"
- $ECHO
-}
-
-##########################
-# VERSION_CHECK FUNCTION #
-##########################
-version_check ( ) {
- if [ "x$1" = "x" ] ; then
- echo "INTERNAL ERROR: version_check was not provided a minimum version"
- exit 1
- fi
- _min="$1"
- if [ "x$2" = "x" ] ; then
- echo "INTERNAL ERROR: version check was not provided a comparison version"
- exit 1
- fi
- _cur="$2"
-
- # needed to handle versions like 1.10 and 1.4-p6
- _min="`echo ${_min}. | sed 's/[^0-9]/./g' | sed 's/\.\././g'`"
- _cur="`echo ${_cur}. | sed 's/[^0-9]/./g' | sed 's/\.\././g'`"
-
- _min_major="`echo $_min | cut -d. -f1`"
- _min_minor="`echo $_min | cut -d. -f2`"
- _min_patch="`echo $_min | cut -d. -f3`"
-
- _cur_major="`echo $_cur | cut -d. -f1`"
- _cur_minor="`echo $_cur | cut -d. -f2`"
- _cur_patch="`echo $_cur | cut -d. -f3`"
-
- if [ "x$_min_major" = "x" ] ; then
- _min_major=0
- fi
- if [ "x$_min_minor" = "x" ] ; then
- _min_minor=0
- fi
- if [ "x$_min_patch" = "x" ] ; then
- _min_patch=0
- fi
- if [ "x$_cur_minor" = "x" ] ; then
- _cur_major=0
- fi
- if [ "x$_cur_minor" = "x" ] ; then
- _cur_minor=0
- fi
- if [ "x$_cur_patch" = "x" ] ; then
- _cur_patch=0
- fi
-
- $VERBOSE_ECHO "Checking if ${_cur_major}.${_cur_minor}.${_cur_patch} is greater than ${_min_major}.${_min_minor}.${_min_patch}"
-
- if [ $_min_major -lt $_cur_major ] ; then
- return 0
- elif [ $_min_major -eq $_cur_major ] ; then
- if [ $_min_minor -lt $_cur_minor ] ; then
- return 0
- elif [ $_min_minor -eq $_cur_minor ] ; then
- if [ $_min_patch -lt $_cur_patch ] ; then
- return 0
- elif [ $_min_patch -eq $_cur_patch ] ; then
- return 0
- fi
- fi
- fi
- return 1
-}
-
-
-######################################
-# LOCATE_CONFIGURE_TEMPLATE FUNCTION #
-######################################
-locate_configure_template ( ) {
- _pwd="`pwd`"
- if test -f "./configure.ac" ; then
- echo "./configure.ac"
- elif test -f "./configure.in" ; then
- echo "./configure.in"
- elif test -f "$_pwd/configure.ac" ; then
- echo "$_pwd/configure.ac"
- elif test -f "$_pwd/configure.in" ; then
- echo "$_pwd/configure.in"
- elif test -f "$PATH_TO_AUTOGEN/configure.ac" ; then
- echo "$PATH_TO_AUTOGEN/configure.ac"
- elif test -f "$PATH_TO_AUTOGEN/configure.in" ; then
- echo "$PATH_TO_AUTOGEN/configure.in"
- fi
-}
-
-
-##################
-# argument check #
-##################
-ARGS="$*"
-PATH_TO_AUTOGEN="`dirname $0`"
-NAME_OF_AUTOGEN="`basename $0`"
-AUTOGEN_SH="$PATH_TO_AUTOGEN/$NAME_OF_AUTOGEN"
-
-LIBTOOL_M4="${PATH_TO_AUTOGEN}/misc/libtool.m4"
-
-if [ "x$HELP" = "x" ] ; then
- HELP=no
-fi
-if [ "x$QUIET" = "x" ] ; then
- QUIET=no
-fi
-if [ "x$VERBOSE" = "x" ] ; then
- VERBOSE=no
-fi
-if [ "x$VERSION_ONLY" = "x" ] ; then
- VERSION_ONLY=no
-fi
-if [ "x$DOWNLOAD" = "x" ] ; then
- DOWNLOAD=no
-fi
-if [ "x$AUTORECONF_OPTIONS" = "x" ] ; then
- AUTORECONF_OPTIONS="-i -f"
-fi
-if [ "x$AUTOCONF_OPTIONS" = "x" ] ; then
- AUTOCONF_OPTIONS="-f"
-fi
-if [ "x$AUTOMAKE_OPTIONS" = "x" ] ; then
- AUTOMAKE_OPTIONS="-a -c -f"
-fi
-ALT_AUTOMAKE_OPTIONS="-a -c"
-if [ "x$LIBTOOLIZE_OPTIONS" = "x" ] ; then
- LIBTOOLIZE_OPTIONS="--automake -c -f"
-fi
-ALT_LIBTOOLIZE_OPTIONS="--automake --copy --force"
-if [ "x$ACLOCAL_OPTIONS" = "x" ] ; then
- ACLOCAL_OPTIONS=""
-fi
-if [ "x$AUTOHEADER_OPTIONS" = "x" ] ; then
- AUTOHEADER_OPTIONS=""
-fi
-if [ "x$CONFIG_GUESS_URL" = "x" ] ; then
- CONFIG_GUESS_URL="http://git.savannah.gnu.org/gitweb/?p=gnulib.git;a=blob_plain;f=build-aux/config.guess;hb=HEAD"
-fi
-for arg in $ARGS ; do
- case "x$arg" in
- x--help) HELP=yes ;;
- x-[hH]) HELP=yes ;;
- x--quiet) QUIET=yes ;;
- x-[qQ]) QUIET=yes ;;
- x--verbose) VERBOSE=yes ;;
- x-[dD]) DOWNLOAD=yes ;;
- x--download) DOWNLOAD=yes ;;
- x-[vV]) VERBOSE=yes ;;
- x--version) VERSION_ONLY=yes ;;
- *)
- echo "Unknown option: $arg"
- echo
- usage
- exit 1
- ;;
- esac
-done
-
-
-#####################
-# environment check #
-#####################
-
-# sanity check before recursions potentially begin
-if [ ! -f "$AUTOGEN_SH" ] ; then
- echo "INTERNAL ERROR: $AUTOGEN_SH does not exist"
- if [ ! "x$0" = "x$AUTOGEN_SH" ] ; then
- echo "INTERNAL ERROR: dirname/basename inconsistency: $0 != $AUTOGEN_SH"
- fi
- exit 1
-fi
-
-# force locale setting to C so things like date output as expected
-LC_ALL=C
-
-# commands that this script expects
-for __cmd in echo head tail pwd ; do
- echo "test" | $__cmd > /dev/null 2>&1
- if [ $? != 0 ] ; then
- echo "INTERNAL ERROR: '${__cmd}' command is required"
- exit 2
- fi
-done
-echo "test" | grep "test" > /dev/null 2>&1
-if test ! x$? = x0 ; then
- echo "INTERNAL ERROR: grep command is required"
- exit 1
-fi
-echo "test" | sed "s/test/test/" > /dev/null 2>&1
-if test ! x$? = x0 ; then
- echo "INTERNAL ERROR: sed command is required"
- exit 1
-fi
-
-
-# determine the behavior of echo
-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
- *c*,-n*) ECHO_N= ECHO_C='
-' ECHO_T=' ' ;;
- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
- *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
-esac
-
-# determine the behavior of head
-case "x`echo 'head' | head -n 1 2>&1`" in
- *xhead*) HEAD_N="n " ;;
- *) HEAD_N="" ;;
-esac
-
-# determine the behavior of tail
-case "x`echo 'tail' | tail -n 1 2>&1`" in
- *xtail*) TAIL_N="n " ;;
- *) TAIL_N="" ;;
-esac
-
-VERBOSE_ECHO=:
-ECHO=:
-if [ "x$QUIET" = "xyes" ] ; then
- if [ "x$VERBOSE" = "xyes" ] ; then
- echo "Verbose output quelled by quiet option. Further output disabled."
- fi
-else
- ECHO=echo
- if [ "x$VERBOSE" = "xyes" ] ; then
- echo "Verbose output enabled"
- VERBOSE_ECHO=echo
- fi
-fi
-
-
-# allow a recursive run to disable further recursions
-if [ "x$RUN_RECURSIVE" = "x" ] ; then
- RUN_RECURSIVE=yes
-fi
-
-
-################################################
-# check for help arg and bypass version checks #
-################################################
-if [ "x`echo $ARGS | sed 's/.*[hH][eE][lL][pP].*/help/'`" = "xhelp" ] ; then
- HELP=yes
-fi
-if [ "x$HELP" = "xyes" ] ; then
- usage
- $ECHO "---"
- $ECHO "Help was requested. No preparation or configuration will be performed."
- exit 0
-fi
-
-
-#######################
-# set up signal traps #
-#######################
-untrap_abnormal ( ) {
- for sig in 1 2 13 15; do
- trap - $sig
- done
-}
-
-# do this cleanup whenever we exit.
-trap '
- # start from the root
- if test -d "$START_PATH" ; then
- cd "$START_PATH"
- fi
-
- # restore/delete backup files
- if test "x$PFC_INIT" = "x1" ; then
- recursive_restore
- fi
-' 0
-
-# trap SIGHUP (1), SIGINT (2), SIGPIPE (13), SIGTERM (15)
-for sig in 1 2 13 15; do
- trap '
- $ECHO ""
- $ECHO "Aborting $NAME_OF_AUTOGEN: caught signal '$sig'"
-
- # start from the root
- if test -d "$START_PATH" ; then
- cd "$START_PATH"
- fi
-
- # clean up on abnormal exit
- $VERBOSE_ECHO "rm -rf autom4te.cache"
- rm -rf autom4te.cache
-
- if test -f "acinclude.m4.$$.backup" ; then
- $VERBOSE_ECHO "cat acinclude.m4.$$.backup > acinclude.m4"
- chmod u+w acinclude.m4
- cat acinclude.m4.$$.backup > acinclude.m4
-
- $VERBOSE_ECHO "rm -f acinclude.m4.$$.backup"
- rm -f acinclude.m4.$$.backup
- fi
-
- { (exit 1); exit 1; }
-' $sig
-done
-
-
-#############################
-# look for a configure file #
-#############################
-if [ "x$CONFIGURE" = "x" ] ; then
- CONFIGURE="`locate_configure_template`"
- if [ ! "x$CONFIGURE" = "x" ] ; then
- $VERBOSE_ECHO "Found a configure template: $CONFIGURE"
- fi
-else
- $ECHO "Using CONFIGURE environment variable override: $CONFIGURE"
-fi
-if [ "x$CONFIGURE" = "x" ] ; then
- if [ "x$VERSION_ONLY" = "xyes" ] ; then
- CONFIGURE=/dev/null
- else
- $ECHO
- $ECHO "A configure.ac or configure.in file could not be located implying"
- $ECHO "that the GNU Build System is at least not used in this directory. In"
- $ECHO "any case, there is nothing to do here without one of those files."
- $ECHO
- $ECHO "ERROR: No configure.in or configure.ac file found in `pwd`"
- exit 1
- fi
-fi
-
-####################
-# get project name #
-####################
-if [ "x$PROJECT" = "x" ] ; then
- PROJECT="`grep AC_INIT $CONFIGURE | grep -v '.*#.*AC_INIT' | tail -${TAIL_N}1 | sed 's/^[ ]*AC_INIT(\([^,)]*\).*/\1/' | sed 's/.*\[\(.*\)\].*/\1/'`"
- if [ "x$PROJECT" = "xAC_INIT" ] ; then
- # projects might be using the older/deprecated arg-less AC_INIT .. look for AM_INIT_AUTOMAKE instead
- PROJECT="`grep AM_INIT_AUTOMAKE $CONFIGURE | grep -v '.*#.*AM_INIT_AUTOMAKE' | tail -${TAIL_N}1 | sed 's/^[ ]*AM_INIT_AUTOMAKE(\([^,)]*\).*/\1/' | sed 's/.*\[\(.*\)\].*/\1/'`"
- fi
- if [ "x$PROJECT" = "xAM_INIT_AUTOMAKE" ] ; then
- PROJECT="project"
- fi
- if [ "x$PROJECT" = "x" ] ; then
- PROJECT="project"
- fi
-else
- $ECHO "Using PROJECT environment variable override: $PROJECT"
-fi
-$ECHO "Preparing the $PROJECT build system...please wait"
-$ECHO
-
-
-########################
-# check for autoreconf #
-########################
-HAVE_AUTORECONF=no
-if [ "x$AUTORECONF" = "x" ] ; then
- for AUTORECONF in autoreconf ; do
- $VERBOSE_ECHO "Checking autoreconf version: $AUTORECONF --version"
- $AUTORECONF --version > /dev/null 2>&1
- if [ $? = 0 ] ; then
- HAVE_AUTORECONF=yes
- break
- fi
- done
-else
- HAVE_AUTORECONF=yes
- $ECHO "Using AUTORECONF environment variable override: $AUTORECONF"
-fi
-
-
-##########################
-# autoconf version check #
-##########################
-_acfound=no
-if [ "x$AUTOCONF" = "x" ] ; then
- for AUTOCONF in autoconf ; do
- $VERBOSE_ECHO "Checking autoconf version: $AUTOCONF --version"
- $AUTOCONF --version > /dev/null 2>&1
- if [ $? = 0 ] ; then
- _acfound=yes
- break
- fi
- done
-else
- _acfound=yes
- $ECHO "Using AUTOCONF environment variable override: $AUTOCONF"
-fi
-
-_report_error=no
-if [ ! "x$_acfound" = "xyes" ] ; then
- $ECHO "ERROR: Unable to locate GNU Autoconf."
- _report_error=yes
-else
- _version="`$AUTOCONF --version | head -${HEAD_N}1 | sed 's/[^0-9]*\([0-9\.][0-9\.]*\)/\1/'`"
- if [ "x$_version" = "x" ] ; then
- _version="0.0.0"
- fi
- $ECHO "Found GNU Autoconf version $_version"
- version_check "$AUTOCONF_VERSION" "$_version"
- if [ $? -ne 0 ] ; then
- _report_error=yes
- fi
-fi
-if [ "x$_report_error" = "xyes" ] ; then
- version_error "$AUTOCONF_VERSION" "GNU Autoconf"
- exit 1
-fi
-
-
-##########################
-# automake version check #
-##########################
-_amfound=no
-if [ "x$AUTOMAKE" = "x" ] ; then
- for AUTOMAKE in automake ; do
- $VERBOSE_ECHO "Checking automake version: $AUTOMAKE --version"
- $AUTOMAKE --version > /dev/null 2>&1
- if [ $? = 0 ] ; then
- _amfound=yes
- break
- fi
- done
-else
- _amfound=yes
- $ECHO "Using AUTOMAKE environment variable override: $AUTOMAKE"
-fi
-
-
-_report_error=no
-if [ ! "x$_amfound" = "xyes" ] ; then
- $ECHO
- $ECHO "ERROR: Unable to locate GNU Automake."
- _report_error=yes
-else
- _version="`$AUTOMAKE --version | head -${HEAD_N}1 | sed 's/[^0-9]*\([0-9\.][0-9\.]*\)/\1/'`"
- if [ "x$_version" = "x" ] ; then
- _version="0.0.0"
- fi
- $ECHO "Found GNU Automake version $_version"
- version_check "$AUTOMAKE_VERSION" "$_version"
- if [ $? -ne 0 ] ; then
- _report_error=yes
- fi
-fi
-if [ "x$_report_error" = "xyes" ] ; then
- version_error "$AUTOMAKE_VERSION" "GNU Automake"
- exit 1
-fi
-
-
-########################
-# check for libtoolize #
-########################
-HAVE_LIBTOOLIZE=yes
-HAVE_ALT_LIBTOOLIZE=no
-_ltfound=no
-if [ "x$LIBTOOLIZE" = "x" ] ; then
- LIBTOOLIZE=libtoolize
- $VERBOSE_ECHO "Checking libtoolize version: $LIBTOOLIZE --version"
- $LIBTOOLIZE --version > /dev/null 2>&1
- if [ ! $? = 0 ] ; then
- HAVE_LIBTOOLIZE=no
- $ECHO
- if [ "x$HAVE_AUTORECONF" = "xno" ] ; then
- $ECHO "Warning: libtoolize does not appear to be available."
- else
- $ECHO "Warning: libtoolize does not appear to be available. This means that"
- $ECHO "the automatic build preparation via autoreconf will probably not work."
- $ECHO "Preparing the build by running each step individually, however, should"
- $ECHO "work and will be done automatically for you if autoreconf fails."
- fi
-
- # look for some alternates
- for tool in glibtoolize libtoolize15 libtoolize14 libtoolize13 ; do
- $VERBOSE_ECHO "Checking libtoolize alternate: $tool --version"
- _glibtoolize="`$tool --version > /dev/null 2>&1`"
- if [ $? = 0 ] ; then
- $VERBOSE_ECHO "Found $tool --version"
- _glti="`which $tool`"
- if [ "x$_glti" = "x" ] ; then
- $VERBOSE_ECHO "Cannot find $tool with which"
- continue;
- fi
- if test ! -f "$_glti" ; then
- $VERBOSE_ECHO "Cannot use $tool, $_glti is not a file"
- continue;
- fi
- _gltidir="`dirname $_glti`"
- if [ "x$_gltidir" = "x" ] ; then
- $VERBOSE_ECHO "Cannot find $tool path with dirname of $_glti"
- continue;
- fi
- if test ! -d "$_gltidir" ; then
- $VERBOSE_ECHO "Cannot use $tool, $_gltidir is not a directory"
- continue;
- fi
- HAVE_ALT_LIBTOOLIZE=yes
- LIBTOOLIZE="$tool"
- $ECHO
- $ECHO "Fortunately, $tool was found which means that your system may simply"
- $ECHO "have a non-standard or incomplete GNU Autotools install. If you have"
- $ECHO "sufficient system access, it may be possible to quell this warning by"
- $ECHO "running:"
- $ECHO
- sudo -V > /dev/null 2>&1
- if [ $? = 0 ] ; then
- $ECHO " sudo ln -s $_glti $_gltidir/libtoolize"
- $ECHO
- else
- $ECHO " ln -s $_glti $_gltidir/libtoolize"
- $ECHO
- $ECHO "Run that as root or with proper permissions to the $_gltidir directory"
- $ECHO
- fi
- _ltfound=yes
- break
- fi
- done
- else
- _ltfound=yes
- fi
-else
- _ltfound=yes
- $ECHO "Using LIBTOOLIZE environment variable override: $LIBTOOLIZE"
-fi
-
-
-############################
-# libtoolize version check #
-############################
-_report_error=no
-if [ ! "x$_ltfound" = "xyes" ] ; then
- $ECHO
- $ECHO "ERROR: Unable to locate GNU Libtool."
- _report_error=yes
-else
- _version="`$LIBTOOLIZE --version | head -${HEAD_N}1 | sed 's/[^0-9]*\([0-9\.][0-9\.]*\)/\1/'`"
- if [ "x$_version" = "x" ] ; then
- _version="0.0.0"
- fi
- $ECHO "Found GNU Libtool version $_version"
- version_check "$LIBTOOL_VERSION" "$_version"
- if [ $? -ne 0 ] ; then
- _report_error=yes
- fi
-fi
-if [ "x$_report_error" = "xyes" ] ; then
- version_error "$LIBTOOL_VERSION" "GNU Libtool"
- exit 1
-fi
-
-
-#####################
-# check for aclocal #
-#####################
-if [ "x$ACLOCAL" = "x" ] ; then
- for ACLOCAL in aclocal ; do
- $VERBOSE_ECHO "Checking aclocal version: $ACLOCAL --version"
- $ACLOCAL --version > /dev/null 2>&1
- if [ $? = 0 ] ; then
- break
- fi
- done
-else
- $ECHO "Using ACLOCAL environment variable override: $ACLOCAL"
-fi
-
-
-########################
-# check for autoheader #
-########################
-if [ "x$AUTOHEADER" = "x" ] ; then
- for AUTOHEADER in autoheader ; do
- $VERBOSE_ECHO "Checking autoheader version: $AUTOHEADER --version"
- $AUTOHEADER --version > /dev/null 2>&1
- if [ $? = 0 ] ; then
- break
- fi
- done
-else
- $ECHO "Using AUTOHEADER environment variable override: $AUTOHEADER"
-fi
-
-
-#########################
-# check if version only #
-#########################
-$VERBOSE_ECHO "Checking whether to only output version information"
-if [ "x$VERSION_ONLY" = "xyes" ] ; then
- $ECHO
- ident
- $ECHO "---"
- $ECHO "Version requested. No preparation or configuration will be performed."
- exit 0
-fi
-
-
-#################################
-# PROTECT_FROM_CLOBBER FUNCTION #
-#################################
-protect_from_clobber ( ) {
- PFC_INIT=1
-
- # protect COPYING & INSTALL from overwrite by automake. the
- # automake force option will (inappropriately) ignore the existing
- # contents of a COPYING and/or INSTALL files (depending on the
- # version) instead of just forcing *missing* files like it does
- # for AUTHORS, NEWS, and README. this is broken but extremely
- # prevalent behavior, so we protect against it by keeping a backup
- # of the file that can later be restored.
-
- for file in COPYING INSTALL ; do
- if test -f ${file} ; then
- if test -f ${file}.$$.protect_from_automake.backup ; then
- $VERBOSE_ECHO "Already backed up ${file} in `pwd`"
- else
- $VERBOSE_ECHO "Backing up ${file} in `pwd`"
- $VERBOSE_ECHO "cp -p ${file} ${file}.$$.protect_from_automake.backup"
- cp -p ${file} ${file}.$$.protect_from_automake.backup
- fi
- fi
- done
-}
-
-
-##############################
-# RECURSIVE_PROTECT FUNCTION #
-##############################
-recursive_protect ( ) {
-
- # for projects using recursive configure, run the build
- # preparation steps for the subdirectories. this function assumes
- # START_PATH was set to pwd before recursion begins so that
- # relative paths work.
-
- # git 'r done, protect COPYING and INSTALL from being clobbered
- protect_from_clobber
-
- if test -d autom4te.cache ; then
- $VERBOSE_ECHO "Found an autom4te.cache directory, deleting it"
- $VERBOSE_ECHO "rm -rf autom4te.cache"
- rm -rf autom4te.cache
- fi
-
- # find configure template
- _configure="`locate_configure_template`"
- if [ "x$_configure" = "x" ] ; then
- return
- fi
- # $VERBOSE_ECHO "Looking for configure template found `pwd`/$_configure"
-
- # look for subdirs
- # $VERBOSE_ECHO "Looking for subdirs in `pwd`"
- _det_config_subdirs="`grep AC_CONFIG_SUBDIRS $_configure | grep -v '.*#.*AC_CONFIG_SUBDIRS' | sed 's/^[ ]*AC_CONFIG_SUBDIRS(\(.*\)).*/\1/' | sed 's/.*\[\(.*\)\].*/\1/'`"
- CHECK_DIRS=""
- for dir in $_det_config_subdirs ; do
- if test -d "`pwd`/$dir" ; then
- CHECK_DIRS="$CHECK_DIRS \"`pwd`/$dir\""
- fi
- done
-
- # process subdirs
- if [ ! "x$CHECK_DIRS" = "x" ] ; then
- $VERBOSE_ECHO "Recursively scanning the following directories:"
- $VERBOSE_ECHO " $CHECK_DIRS"
- for dir in $CHECK_DIRS ; do
- $VERBOSE_ECHO "Protecting files from automake in $dir"
- cd "$START_PATH"
- eval "cd $dir"
-
- # recursively git 'r done
- recursive_protect
- done
- fi
-} # end of recursive_protect
-
-
-#############################
-# RESTORE_CLOBBERED FUNCION #
-#############################
-restore_clobbered ( ) {
-
- # The automake (and autoreconf by extension) -f/--force-missing
- # option may overwrite COPYING and INSTALL even if they do exist.
- # Here we restore the files if necessary.
-
- spacer=no
-
- for file in COPYING INSTALL ; do
- if test -f ${file}.$$.protect_from_automake.backup ; then
- if test -f ${file} ; then
- # compare entire content, restore if needed
- if test "x`cat ${file}`" != "x`cat ${file}.$$.protect_from_automake.backup`" ; then
- if test "x$spacer" = "xno" ; then
- $VERBOSE_ECHO
- spacer=yes
- fi
- # restore the backup
- $VERBOSE_ECHO "Restoring ${file} from backup (automake -f likely clobbered it)"
- $VERBOSE_ECHO "rm -f ${file}"
- rm -f ${file}
- $VERBOSE_ECHO "mv ${file}.$$.protect_from_automake.backup ${file}"
- mv ${file}.$$.protect_from_automake.backup ${file}
- fi # check contents
- elif test -f ${file}.$$.protect_from_automake.backup ; then
- $VERBOSE_ECHO "mv ${file}.$$.protect_from_automake.backup ${file}"
- mv ${file}.$$.protect_from_automake.backup ${file}
- fi # -f ${file}
-
- # just in case
- $VERBOSE_ECHO "rm -f ${file}.$$.protect_from_automake.backup"
- rm -f ${file}.$$.protect_from_automake.backup
- fi # -f ${file}.$$.protect_from_automake.backup
- done
-
- CONFIGURE="`locate_configure_template`"
- if [ "x$CONFIGURE" = "x" ] ; then
- return
- fi
-
- _aux_dir="`grep AC_CONFIG_AUX_DIR $CONFIGURE | grep -v '.*#.*AC_CONFIG_AUX_DIR' | tail -${TAIL_N}1 | sed 's/^[ ]*AC_CONFIG_AUX_DIR(\(.*\)).*/\1/' | sed 's/.*\[\(.*\)\].*/\1/'`"
- if test ! -d "$_aux_dir" ; then
- _aux_dir=.
- fi
-
- for file in config.guess config.sub ltmain.sh ; do
- if test -f "${_aux_dir}/${file}" ; then
- $VERBOSE_ECHO "rm -f \"${_aux_dir}/${file}.backup\""
- rm -f "${_aux_dir}/${file}.backup"
- fi
- done
-} # end of restore_clobbered
-
-
-##############################
-# RECURSIVE_RESTORE FUNCTION #
-##############################
-recursive_restore ( ) {
-
- # restore COPYING and INSTALL from backup if they were clobbered
- # for each directory recursively.
-
- # git 'r undone
- restore_clobbered
-
- # find configure template
- _configure="`locate_configure_template`"
- if [ "x$_configure" = "x" ] ; then
- return
- fi
-
- # look for subdirs
- _det_config_subdirs="`grep AC_CONFIG_SUBDIRS $_configure | grep -v '.*#.*AC_CONFIG_SUBDIRS' | sed 's/^[ ]*AC_CONFIG_SUBDIRS(\(.*\)).*/\1/' | sed 's/.*\[\(.*\)\].*/\1/'`"
- CHECK_DIRS=""
- for dir in $_det_config_subdirs ; do
- if test -d "`pwd`/$dir" ; then
- CHECK_DIRS="$CHECK_DIRS \"`pwd`/$dir\""
- fi
- done
-
- # process subdirs
- if [ ! "x$CHECK_DIRS" = "x" ] ; then
- $VERBOSE_ECHO "Recursively scanning the following directories:"
- $VERBOSE_ECHO " $CHECK_DIRS"
- for dir in $CHECK_DIRS ; do
- $VERBOSE_ECHO "Checking files for automake damage in $dir"
- cd "$START_PATH"
- eval "cd $dir"
-
- # recursively git 'r undone
- recursive_restore
- done
- fi
-} # end of recursive_restore
-
-
-#######################
-# INITIALIZE FUNCTION #
-#######################
-initialize ( ) {
-
- # this routine performs a variety of directory-specific
- # initializations. some are sanity checks, some are preventive,
- # and some are necessary setup detection.
- #
- # this function sets:
- # CONFIGURE
- # SEARCH_DIRS
- # CONFIG_SUBDIRS
-
- ##################################
- # check for a configure template #
- ##################################
- CONFIGURE="`locate_configure_template`"
- if [ "x$CONFIGURE" = "x" ] ; then
- $ECHO
- $ECHO "A configure.ac or configure.in file could not be located implying"
- $ECHO "that the GNU Build System is at least not used in this directory. In"
- $ECHO "any case, there is nothing to do here without one of those files."
- $ECHO
- $ECHO "ERROR: No configure.in or configure.ac file found in `pwd`"
- exit 1
- fi
-
- #####################
- # detect an aux dir #
- #####################
- _aux_dir="`grep AC_CONFIG_AUX_DIR $CONFIGURE | grep -v '.*#.*AC_CONFIG_AUX_DIR' | tail -${TAIL_N}1 | sed 's/^[ ]*AC_CONFIG_AUX_DIR(\(.*\)).*/\1/' | sed 's/.*\[\(.*\)\].*/\1/'`"
- if test ! -d "$_aux_dir" ; then
- _aux_dir=.
- else
- $VERBOSE_ECHO "Detected auxillary directory: $_aux_dir"
- fi
-
- ################################
- # detect a recursive configure #
- ################################
- CONFIG_SUBDIRS=""
- _det_config_subdirs="`grep AC_CONFIG_SUBDIRS $CONFIGURE | grep -v '.*#.*AC_CONFIG_SUBDIRS' | sed 's/^[ ]*AC_CONFIG_SUBDIRS(\(.*\)).*/\1/' | sed 's/.*\[\(.*\)\].*/\1/'`"
- for dir in $_det_config_subdirs ; do
- if test -d "`pwd`/$dir" ; then
- $VERBOSE_ECHO "Detected recursive configure directory: `pwd`/$dir"
- CONFIG_SUBDIRS="$CONFIG_SUBDIRS `pwd`/$dir"
- fi
- done
-
- ###########################################################
- # make sure certain required files exist for GNU projects #
- ###########################################################
- _marker_found=""
- _marker_found_message_intro='Detected non-GNU marker "'
- _marker_found_message_mid='" in '
- for marker in foreign cygnus ; do
- _marker_found_message=${_marker_found_message_intro}${marker}${_marker_found_message_mid}
- _marker_found="`grep 'AM_INIT_AUTOMAKE.*'${marker} $CONFIGURE`"
- if [ ! "x$_marker_found" = "x" ] ; then
- $VERBOSE_ECHO "${_marker_found_message}`basename \"$CONFIGURE\"`"
- break
- fi
- if test -f "`dirname \"$CONFIGURE\"/Makefile.am`" ; then
- _marker_found="`grep 'AUTOMAKE_OPTIONS.*'${marker} Makefile.am`"
- if [ ! "x$_marker_found" = "x" ] ; then
- $VERBOSE_ECHO "${_marker_found_message}Makefile.am"
- break
- fi
- fi
- done
- if [ "x${_marker_found}" = "x" ] ; then
- _suggest_foreign=no
- for file in AUTHORS COPYING ChangeLog INSTALL NEWS README ; do
- if [ ! -f $file ] ; then
- $VERBOSE_ECHO "Touching ${file} since it does not exist"
- _suggest_foreign=yes
- touch $file
- fi
- done
-
- if [ "x${_suggest_foreign}" = "xyes" ] ; then
- $ECHO
- $ECHO "Warning: Several files expected of projects that conform to the GNU"
- $ECHO "coding standards were not found. The files were automatically added"
- $ECHO "for you since you do not have a 'foreign' declaration specified."
- $ECHO
- $ECHO "Considered adding 'foreign' to AM_INIT_AUTOMAKE in `basename \"$CONFIGURE\"`"
- if test -f "`dirname \"$CONFIGURE\"/Makefile.am`" ; then
- $ECHO "or to AUTOMAKE_OPTIONS in your top-level Makefile.am file."
- fi
- $ECHO
- fi
- fi
-
- ##################################################
- # make sure certain generated files do not exist #
- ##################################################
- for file in config.guess config.sub ltmain.sh ; do
- if test -f "${_aux_dir}/${file}" ; then
- $VERBOSE_ECHO "mv -f \"${_aux_dir}/${file}\" \"${_aux_dir}/${file}.backup\""
- mv -f "${_aux_dir}/${file}" "${_aux_dir}/${file}.backup"
- fi
- done
-
- ############################
- # search alternate m4 dirs #
- ############################
- SEARCH_DIRS=""
- for dir in m4 ; do
- if [ -d $dir ] ; then
- $VERBOSE_ECHO "Found extra aclocal search directory: $dir"
- SEARCH_DIRS="$SEARCH_DIRS -I $dir"
- fi
- done
-
- ######################################
- # remove any previous build products #
- ######################################
- if test -d autom4te.cache ; then
- $VERBOSE_ECHO "Found an autom4te.cache directory, deleting it"
- $VERBOSE_ECHO "rm -rf autom4te.cache"
- rm -rf autom4te.cache
- fi
-# tcl/tk (and probably others) have a customized aclocal.m4, so can't delete it
-# if test -f aclocal.m4 ; then
-# $VERBOSE_ECHO "Found an aclocal.m4 file, deleting it"
-# $VERBOSE_ECHO "rm -f aclocal.m4"
-# rm -f aclocal.m4
-# fi
-
-} # end of initialize()
-
-
-##############
-# initialize #
-##############
-
-# stash path
-START_PATH="`pwd`"
-
-# Before running autoreconf or manual steps, some prep detection work
-# is necessary or useful. Only needs to occur once per directory, but
-# does need to traverse the entire subconfigure hierarchy to protect
-# files from being clobbered even by autoreconf.
-recursive_protect
-
-# start from where we started
-cd "$START_PATH"
-
-# get ready to process
-initialize
-
-
-#########################################
-# DOWNLOAD_GNULIB_CONFIG_GUESS FUNCTION #
-#########################################
-
-# TODO - should make sure wget/curl exist and/or work before trying to
-# use them.
-
-download_gnulib_config_guess () {
- # abuse gitweb to download gnulib's latest config.guess via HTTP
- config_guess_temp="config.guess.$$.download"
- ret=1
- for __cmd in wget curl fetch ; do
- $VERBOSE_ECHO "Checking for command ${__cmd}"
- ${__cmd} --version > /dev/null 2>&1
- ret=$?
- if [ ! $ret = 0 ] ; then
- continue
- fi
-
- __cmd_version=`${__cmd} --version | head -n 1 | sed -e 's/^[^0-9]\+//' -e 's/ .*//'`
- $VERBOSE_ECHO "Found ${__cmd} ${__cmd_version}"
-
- opts=""
- case ${__cmd} in
- wget)
- opts="-O"
- ;;
- curl)
- opts="-o"
- ;;
- fetch)
- opts="-t 5 -f"
- ;;
- esac
-
- $VERBOSE_ECHO "Running $__cmd \"${CONFIG_GUESS_URL}\" $opts \"${config_guess_temp}\""
- eval "$__cmd \"${CONFIG_GUESS_URL}\" $opts \"${config_guess_temp}\"" > /dev/null 2>&1
- if [ $? = 0 ] ; then
- mv -f "${config_guess_temp}" ${_aux_dir}/config.guess
- ret=0
- break
- fi
- done
-
- if [ ! $ret = 0 ] ; then
- $ECHO "Warning: config.guess download failed from: $CONFIG_GUESS_URL"
- rm -f "${config_guess_temp}"
- fi
-}
-
-
-##############################
-# LIBTOOLIZE_NEEDED FUNCTION #
-##############################
-libtoolize_needed () {
- ret=1 # means no, don't need libtoolize
- for feature in AC_PROG_LIBTOOL AM_PROG_LIBTOOL LT_INIT ; do
- $VERBOSE_ECHO "Searching for $feature in $CONFIGURE"
- found="`grep \"^$feature.*\" $CONFIGURE`"
- if [ ! "x$found" = "x" ] ; then
- ret=0 # means yes, need to run libtoolize
- break
- fi
- done
- return ${ret}
-}
-
-
-
-############################################
-# prepare build via autoreconf or manually #
-############################################
-reconfigure_manually=no
-if [ "x$HAVE_AUTORECONF" = "xyes" ] ; then
- $ECHO
- $ECHO $ECHO_N "Automatically preparing build ... $ECHO_C"
-
- $VERBOSE_ECHO "$AUTORECONF $SEARCH_DIRS $AUTORECONF_OPTIONS"
- autoreconf_output="`$AUTORECONF $SEARCH_DIRS $AUTORECONF_OPTIONS 2>&1`"
- ret=$?
- $VERBOSE_ECHO "$autoreconf_output"
-
- if [ ! $ret = 0 ] ; then
- if [ "x$HAVE_ALT_LIBTOOLIZE" = "xyes" ] ; then
- if [ ! "x`echo \"$autoreconf_output\" | grep libtoolize | grep \"No such file or directory\"`" = "x" ] ; then
- $ECHO
- $ECHO "Warning: autoreconf failed but due to what is usually a common libtool"
- $ECHO "misconfiguration issue. This problem is encountered on systems that"
- $ECHO "have installed libtoolize under a different name without providing a"
- $ECHO "symbolic link or without setting the LIBTOOLIZE environment variable."
- $ECHO
- $ECHO "Restarting the preparation steps with LIBTOOLIZE set to $LIBTOOLIZE"
-
- export LIBTOOLIZE
- RUN_RECURSIVE=no
- export RUN_RECURSIVE
- untrap_abnormal
-
- $VERBOSE_ECHO sh $AUTOGEN_SH "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9"
- sh "$AUTOGEN_SH" "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9"
- exit $?
- fi
- fi
-
- $ECHO "Warning: $AUTORECONF failed"
-
- if test -f ltmain.sh ; then
- $ECHO "libtoolize being run by autoreconf is not creating ltmain.sh in the auxillary directory like it should"
- fi
-
- $ECHO "Attempting to run the preparation steps individually"
- reconfigure_manually=yes
- else
- if [ "x$DOWNLOAD" = "xyes" ] ; then
- if libtoolize_needed ; then
- download_gnulib_config_guess
- fi
- fi
- fi
-else
- reconfigure_manually=yes
-fi
-
-
-############################
-# LIBTOOL_FAILURE FUNCTION #
-############################
-libtool_failure ( ) {
-
- # libtool is rather error-prone in comparison to the other
- # autotools and this routine attempts to compensate for some
- # common failures. the output after a libtoolize failure is
- # parsed for an error related to AC_PROG_LIBTOOL and if found, we
- # attempt to inject a project-provided libtool.m4 file.
-
- _autoconf_output="$1"
-
- if [ "x$RUN_RECURSIVE" = "xno" ] ; then
- # we already tried the libtool.m4, don't try again
- return 1
- fi
-
- if test -f "$LIBTOOL_M4" ; then
- found_libtool="`$ECHO $_autoconf_output | grep AC_PROG_LIBTOOL`"
- if test ! "x$found_libtool" = "x" ; then
- if test -f acinclude.m4 ; then
- rm -f acinclude.m4.$$.backup
- $VERBOSE_ECHO "cat acinclude.m4 > acinclude.m4.$$.backup"
- cat acinclude.m4 > acinclude.m4.$$.backup
- fi
- $VERBOSE_ECHO "cat \"$LIBTOOL_M4\" >> acinclude.m4"
- chmod u+w acinclude.m4
- cat "$LIBTOOL_M4" >> acinclude.m4
-
- # don't keep doing this
- RUN_RECURSIVE=no
- export RUN_RECURSIVE
- untrap_abnormal
-
- $ECHO
- $ECHO "Restarting the preparation steps with libtool macros in acinclude.m4"
- $VERBOSE_ECHO sh $AUTOGEN_SH "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9"
- sh "$AUTOGEN_SH" "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9"
- exit $?
- fi
- fi
-}
-
-
-###########################
-# MANUAL_AUTOGEN FUNCTION #
-###########################
-manual_autogen ( ) {
-
- ##################################################
- # Manual preparation steps taken are as follows: #
- # aclocal [-I m4] #
- # libtoolize --automake -c -f #
- # aclocal [-I m4] #
- # autoconf -f #
- # autoheader #
- # automake -a -c -f #
- ##################################################
-
- ###########
- # aclocal #
- ###########
- $VERBOSE_ECHO "$ACLOCAL $SEARCH_DIRS $ACLOCAL_OPTIONS"
- aclocal_output="`$ACLOCAL $SEARCH_DIRS $ACLOCAL_OPTIONS 2>&1`"
- ret=$?
- $VERBOSE_ECHO "$aclocal_output"
- if [ ! $ret = 0 ] ; then $ECHO "ERROR: $ACLOCAL failed" && exit 2 ; fi
-
- ##############
- # libtoolize #
- ##############
- if libtoolize_needed ; then
- if [ "x$HAVE_LIBTOOLIZE" = "xyes" ] ; then
- $VERBOSE_ECHO "$LIBTOOLIZE $LIBTOOLIZE_OPTIONS"
- libtoolize_output="`$LIBTOOLIZE $LIBTOOLIZE_OPTIONS 2>&1`"
- ret=$?
- $VERBOSE_ECHO "$libtoolize_output"
-
- if [ ! $ret = 0 ] ; then $ECHO "ERROR: $LIBTOOLIZE failed" && exit 2 ; fi
- else
- if [ "x$HAVE_ALT_LIBTOOLIZE" = "xyes" ] ; then
- $VERBOSE_ECHO "$LIBTOOLIZE $ALT_LIBTOOLIZE_OPTIONS"
- libtoolize_output="`$LIBTOOLIZE $ALT_LIBTOOLIZE_OPTIONS 2>&1`"
- ret=$?
- $VERBOSE_ECHO "$libtoolize_output"
-
- if [ ! $ret = 0 ] ; then $ECHO "ERROR: $LIBTOOLIZE failed" && exit 2 ; fi
- fi
- fi
-
- ###########
- # aclocal #
- ###########
- # re-run again as instructed by libtoolize
- $VERBOSE_ECHO "$ACLOCAL $SEARCH_DIRS $ACLOCAL_OPTIONS"
- aclocal_output="`$ACLOCAL $SEARCH_DIRS $ACLOCAL_OPTIONS 2>&1`"
- ret=$?
- $VERBOSE_ECHO "$aclocal_output"
-
- # libtoolize might put ltmain.sh in the wrong place
- if test -f ltmain.sh ; then
- if test ! -f "${_aux_dir}/ltmain.sh" ; then
- $ECHO
- $ECHO "Warning: $LIBTOOLIZE is creating ltmain.sh in the wrong directory"
- $ECHO
- $ECHO "Fortunately, the problem can be worked around by simply copying the"
- $ECHO "file to the appropriate location (${_aux_dir}/). This has been done for you."
- $ECHO
- $VERBOSE_ECHO "cp -p ltmain.sh \"${_aux_dir}/ltmain.sh\""
- cp -p ltmain.sh "${_aux_dir}/ltmain.sh"
- $ECHO $ECHO_N "Continuing build preparation ... $ECHO_C"
- fi
- fi # ltmain.sh
-
- if [ "x$DOWNLOAD" = "xyes" ] ; then
- download_gnulib_config_guess
- fi
- fi # libtoolize_needed
-
- ############
- # autoconf #
- ############
- $VERBOSE_ECHO
- $VERBOSE_ECHO "$AUTOCONF $AUTOCONF_OPTIONS"
- autoconf_output="`$AUTOCONF $AUTOCONF_OPTIONS 2>&1`"
- ret=$?
- $VERBOSE_ECHO "$autoconf_output"
-
- if [ ! $ret = 0 ] ; then
- # retry without the -f and check for usage of macros that are too new
- ac2_59_macros="AC_C_RESTRICT AC_INCLUDES_DEFAULT AC_LANG_ASSERT AC_LANG_WERROR AS_SET_CATFILE"
- ac2_55_macros="AC_COMPILER_IFELSE AC_FUNC_MBRTOWC AC_HEADER_STDBOOL AC_LANG_CONFTEST AC_LANG_SOURCE AC_LANG_PROGRAM AC_LANG_CALL AC_LANG_FUNC_TRY_LINK AC_MSG_FAILURE AC_PREPROC_IFELSE"
- ac2_54_macros="AC_C_BACKSLASH_A AC_CONFIG_LIBOBJ_DIR AC_GNU_SOURCE AC_PROG_EGREP AC_PROG_FGREP AC_REPLACE_FNMATCH AC_FUNC_FNMATCH_GNU AC_FUNC_REALLOC AC_TYPE_MBSTATE_T"
-
- macros_to_search=""
- ac_major="`echo ${AUTOCONF_VERSION}. | cut -d. -f1 | sed 's/[^0-9]//g'`"
- ac_minor="`echo ${AUTOCONF_VERSION}. | cut -d. -f2 | sed 's/[^0-9]//g'`"
-
- if [ $ac_major -lt 2 ] ; then
- macros_to_search="$ac2_59_macros $ac2_55_macros $ac2_54_macros"
- else
- if [ $ac_minor -lt 54 ] ; then
- macros_to_search="$ac2_59_macros $ac2_55_macros $ac2_54_macros"
- elif [ $ac_minor -lt 55 ] ; then
- macros_to_search="$ac2_59_macros $ac2_55_macros"
- elif [ $ac_minor -lt 59 ] ; then
- macros_to_search="$ac2_59_macros"
- fi
- fi
-
- configure_ac_macros=__none__
- for feature in $macros_to_search ; do
- $VERBOSE_ECHO "Searching for $feature in $CONFIGURE"
- found="`grep \"^$feature.*\" $CONFIGURE`"
- if [ ! "x$found" = "x" ] ; then
- if [ "x$configure_ac_macros" = "x__none__" ] ; then
- configure_ac_macros="$feature"
- else
- configure_ac_macros="$feature $configure_ac_macros"
- fi
- fi
- done
- if [ ! "x$configure_ac_macros" = "x__none__" ] ; then
- $ECHO
- $ECHO "Warning: Unsupported macros were found in $CONFIGURE"
- $ECHO
- $ECHO "The `basename \"$CONFIGURE\"` file was scanned in order to determine if any"
- $ECHO "unsupported macros are used that exceed the minimum version"
- $ECHO "settings specified within this file. As such, the following macros"
- $ECHO "should be removed from configure.ac or the version numbers in this"
- $ECHO "file should be increased:"
- $ECHO
- $ECHO "$configure_ac_macros"
- $ECHO
- $ECHO $ECHO_N "Ignorantly continuing build preparation ... $ECHO_C"
- fi
-
- ###################
- # autoconf, retry #
- ###################
- $VERBOSE_ECHO
- $VERBOSE_ECHO "$AUTOCONF"
- autoconf_output="`$AUTOCONF 2>&1`"
- ret=$?
- $VERBOSE_ECHO "$autoconf_output"
-
- if [ ! $ret = 0 ] ; then
- # test if libtool is busted
- libtool_failure "$autoconf_output"
-
- # let the user know what went wrong
- cat <<EOF
-$autoconf_output
-EOF
- $ECHO "ERROR: $AUTOCONF failed"
- exit 2
- else
- # autoconf sans -f and possibly sans unsupported options succeed so warn verbosely
- $ECHO
- $ECHO "Warning: autoconf seems to have succeeded by removing the following options:"
- $ECHO " AUTOCONF_OPTIONS=\"$AUTOCONF_OPTIONS\""
- $ECHO
- $ECHO "Removing those options should not be necessary and indicate some other"
- $ECHO "problem with the build system. The build preparation is highly suspect"
- $ECHO "and may result in configuration or compilation errors. Consider"
- if [ "x$VERBOSE_ECHO" = "x:" ] ; then
- $ECHO "rerunning the build preparation with verbose output enabled."
- $ECHO " $AUTOGEN_SH --verbose"
- else
- $ECHO "reviewing the minimum GNU Autotools version settings contained in"
- $ECHO "this script along with the macros being used in your `basename \"$CONFIGURE\"` file."
- fi
- $ECHO
- $ECHO $ECHO_N "Continuing build preparation ... $ECHO_C"
- fi # autoconf ret = 0
- fi # autoconf ret = 0
-
- ##############
- # autoheader #
- ##############
- need_autoheader=no
- for feature in AM_CONFIG_HEADER AC_CONFIG_HEADER ; do
- $VERBOSE_ECHO "Searching for $feature in $CONFIGURE"
- found="`grep \"^$feature.*\" $CONFIGURE`"
- if [ ! "x$found" = "x" ] ; then
- need_autoheader=yes
- break
- fi
- done
- if [ "x$need_autoheader" = "xyes" ] ; then
- $VERBOSE_ECHO "$AUTOHEADER $AUTOHEADER_OPTIONS"
- autoheader_output="`$AUTOHEADER $AUTOHEADER_OPTIONS 2>&1`"
- ret=$?
- $VERBOSE_ECHO "$autoheader_output"
- if [ ! $ret = 0 ] ; then $ECHO "ERROR: $AUTOHEADER failed" && exit 2 ; fi
- fi # need_autoheader
-
- ############
- # automake #
- ############
- need_automake=no
- for feature in AM_INIT_AUTOMAKE ; do
- $VERBOSE_ECHO "Searching for $feature in $CONFIGURE"
- found="`grep \"^$feature.*\" $CONFIGURE`"
- if [ ! "x$found" = "x" ] ; then
- need_automake=yes
- break
- fi
- done
-
- if [ "x$need_automake" = "xyes" ] ; then
- $VERBOSE_ECHO "$AUTOMAKE $AUTOMAKE_OPTIONS"
- automake_output="`$AUTOMAKE $AUTOMAKE_OPTIONS 2>&1`"
- ret=$?
- $VERBOSE_ECHO "$automake_output"
-
- if [ ! $ret = 0 ] ; then
-
- ###################
- # automake, retry #
- ###################
- $VERBOSE_ECHO
- $VERBOSE_ECHO "$AUTOMAKE $ALT_AUTOMAKE_OPTIONS"
- # retry without the -f
- automake_output="`$AUTOMAKE $ALT_AUTOMAKE_OPTIONS 2>&1`"
- ret=$?
- $VERBOSE_ECHO "$automake_output"
-
- if [ ! $ret = 0 ] ; then
- # test if libtool is busted
- libtool_failure "$automake_output"
-
- # let the user know what went wrong
- cat <<EOF
-$automake_output
-EOF
- $ECHO "ERROR: $AUTOMAKE failed"
- exit 2
- fi # automake retry
- fi # automake ret = 0
- fi # need_automake
-} # end of manual_autogen
-
-
-#####################################
-# RECURSIVE_MANUAL_AUTOGEN FUNCTION #
-#####################################
-recursive_manual_autogen ( ) {
-
- # run the build preparation steps manually for this directory
- manual_autogen
-
- # for projects using recursive configure, run the build
- # preparation steps for the subdirectories.
- if [ ! "x$CONFIG_SUBDIRS" = "x" ] ; then
- $VERBOSE_ECHO "Recursively configuring the following directories:"
- $VERBOSE_ECHO " $CONFIG_SUBDIRS"
- for dir in $CONFIG_SUBDIRS ; do
- $VERBOSE_ECHO "Processing recursive configure in $dir"
- cd "$START_PATH"
- cd "$dir"
-
- # new directory, prepare
- initialize
-
- # run manual steps for the subdir and any others below
- recursive_manual_autogen
- done
- fi
-}
-
-
-################################
-# run manual preparation steps #
-################################
-if [ "x$reconfigure_manually" = "xyes" ] ; then
- $ECHO
- $ECHO $ECHO_N "Preparing build ... $ECHO_C"
-
- recursive_manual_autogen
-fi
-
-
-#########################
-# restore and summarize #
-#########################
-cd "$START_PATH"
-
-# restore COPYING and INSTALL from backup if necessary
-recursive_restore
-
-# make sure we end up with a configure script
-config_ac="`locate_configure_template`"
-config="`echo $config_ac | sed 's/\.ac$//' | sed 's/\.in$//'`"
-if [ "x$config" = "x" ] ; then
- $VERBOSE_ECHO "Could not locate the configure template (from `pwd`)"
-fi
-
-# summarize
-$ECHO "done"
-$ECHO
-if test "x$config" = "x" -o ! -f "$config" ; then
- $ECHO "WARNING: The $PROJECT build system should now be prepared but there"
- $ECHO "does not seem to be a resulting configure file. This is unexpected"
- $ECHO "and likely the result of an error. You should run $NAME_OF_AUTOGEN"
- $ECHO "with the --verbose option to get more details on a potential"
- $ECHO "misconfiguration."
-else
- $ECHO "The $PROJECT build system is now prepared. To build here, run:"
- $ECHO " $config"
- $ECHO " make"
-fi
-
-
-# Local Variables:
-# mode: sh
-# tab-width: 8
-# sh-basic-offset: 4
-# sh-indentation: 4
-# indent-tabs-mode: t
-# End:
-# ex: shiftwidth=4 tabstop=8
init_opts() {
-# verbose=
+ verbose=
mode=
mode_dir=
new=
--- /dev/null
+#!/bin/sh
+
+#
+# Yoink
+# Run this as a filter to process `.in' files.
+#
+
+test -x "functions.sh" && . "functions.sh"
+test -x "build/functions.sh" && . "build/functions.sh"
+
+tmpfile=$(mktemp "tmp-XXXXXXXX") || die "could not create temp file"
+vars=$(export -p)
+echo "$vars" | sed -n "s/^export \([A-Za-z0-9_]*\)\{1,\}=[\"']\{0,1\}\([^\"'=]*\)[\"']\{0,1\}$/s=@\1@=\2=g/g p" >"$tmpfile"
+sed -f "$tmpfile" <"$1" >"$2"
+rm -f "$tmpfile"
+
--- /dev/null
+#!/bin/sh
+
+#
+# Yoink
+# Execute this file to configure the build system.
+#
+
+PACKAGE="Yoink"
+VERSION="0.1"
+BUGREPORT="chaz@dogcows.com"
+
+
+showhelp()
+{
+ cat <<"END"
+
+This script prepares Yoink for building on your system.
+Usage: ./configure [OPTION]... [VAR=VALUE]...
+
+Basic configuration:
+ -h, --help display this help and exit
+ --host=HOST cross-compile program to run on HOST
+
+ --prefix=DIR base directory to install program
+ --bindir=DIR directory to install executables
+ --libdir=DIR directory to install libraries
+ --datadir=DIR directory to install shared data files
+ --mandir=DIR directory to install manual pages
+
+Program options:
+ --enable-debug include debugging symbols and code paths
+ --enable-double-precision use doubles instead of floats
+ --enable-profile compile in gprof profiling instructions
+ --enable-extra-warnings make the gcc compiler give more warnings
+ --enable-link-sh try to decrease the number of direct dependencies
+ --enable-clock_gettime use clock_gettime() instead of SDL
+ --enable-threads use threads for concurrency where appropriate
+ --enable-hotloading monitor assets and reload them when they change
+
+ --with-gtk use gtk2 modal dialogs
+ --with-qt4 use qt4 modal dialogs; overridden by --with-gtk
+
+END
+}
+
+. "build/functions.sh"
+
+
+#
+# Perform a quick sanity check.
+#
+
+test -f configure -a -f Makefile || die <<"END"
+You must `cd' to the project root directory where the Makefile resides.
+END
+
+
+#
+# Define some default values.
+#
+
+CC=""
+CXX=""
+AR=""
+RANLIB=""
+
+CFLAGS="-g -O2"
+CXXFLAGS="$CFLAGS"
+LDFLAGS=""
+LIBS=""
+
+prefix='/usr/local'
+bindir='$prefix/bin'
+libdir='$prefix/lib'
+datadir='$prefix/share/yoink'
+mandir='$prefix/share/man'
+
+host=$(./build/config.guess)
+althost=$(./build/config.sub $host)
+cross_compile="no"
+
+
+#
+# Parse the command-line options.
+#
+
+for opt in "$@"
+do
+ case $opt in
+ -h|--help)
+ showhelp
+ exit 0
+ ;;
+
+ --host=*)
+ host=$(parse_argument host $opt)
+ cross_compile="yes"
+ ;;
+ --prefix=*)
+ prefix=$(parse_argument prefix $opt)
+ ;;
+ --bindir=*)
+ bindir=$(parse_argument bindir $opt)
+ ;;
+ --libdir=*)
+ libdir=$(parse_argument libdir $opt)
+ ;;
+ --datadir=*)
+ datadir=$(parse_argument datadir $opt)
+ ;;
+ --mandir=*)
+ mandir=$(parse_argument mandir $opt)
+ ;;
+
+ --enable-debug)
+ cflags="$cflags -O0 -Wall -Wno-uninitialized"
+ define "DEBUG"
+ ;;
+ --enable-double-precision)
+ define "USE_DOUBLE_PRECISION"
+ ;;
+ --enable-profile)
+ cflags="$cflags -pg"
+ define "PROFILING_ENABLED"
+ ;;
+ --enable-extra-warnings)
+ cflags="$cflags -Wextra -Wno-unused-parameter"
+ ;;
+ --enable-link-sh)
+ link_sh=yes
+ ;;
+ --enable-clock_gettime)
+ clock_gettime=yes
+ ;;
+ --enable-threads)
+ define "USE_THREADS"
+ ;;
+ --enable-hotloading)
+ define "USE_HOTLOADING"
+ ;;
+ --with-gtk)
+ gtk=yes
+ ;;
+ --with-qt4)
+ qt4=yes
+ ;;
+ *)
+ if echo "$opt" | grep -q '^[A-Za-z0-9_]*=.*'
+ then
+ export "$opt"
+ else
+ echo "warning: unknown option: $opt"
+ fi
+ ;;
+ esac
+done
+
+
+#
+# Evaluate any dependent paths.
+#
+
+eval bindir="$bindir"
+eval datadir="$datadir"
+eval libdir="$libdir"
+eval mandir="$mandir"
+
+is_defined "DEBUG" || define "NDEBUG"
+
+export PKG_CONFIG_PATH="$libdir/pkgconfig:$PKG_CONFIG_PATH"
+
+define_string "YOINK_DATADIR" "$datadir"
+
+
+#
+# Determine the target platform.
+#
+
+case $host in
+ *mingw32*) HOST=win32 ;;
+ *netbsd*) HOST=netbsd ;;
+esac
+
+
+#
+# Define the check functions.
+#
+
+# Run a command and return its exit code. If the third argument is given,
+# stdin will be read and written to the specified file before the command
+# is executed. If the command creates any files inside the current
+# directory, they will be removed automatically.
+# $1 The command to run.
+# $2 The arguments to be passed to the command.
+# $3 Optional filename where stdin will be written.
+check_run_command()
+{
+ tmpdir=$(mktemp -d "tmp-XXXXXXXX") || die "could not create temp directory"
+ cd $tmpdir || die "could not enter temp directory"
+
+ if test "x$3" != x
+ then
+ while read line
+ do
+ echo $line
+ done >$3
+ fi
+
+ saved_ifs=$IFS
+ IFS=:
+ for path in $PATH
+ do
+ if test -x "$path/$1"
+ then
+ eval "$1 $2" 2>&1 >/dev/null
+ exit_code=$?
+
+ cd ..
+ rm -rf $tmpdir
+ IFS=$saved_ifs
+ return $exit_code
+ fi
+ done
+
+ cd ..
+ rm -rf $tmpdir
+ IFS=$saved_ifs
+ return 1
+}
+
+
+#
+# Do some common checks.
+#
+
+if test "x$cross_compile" = xno
+then
+ # If we are not cross-compiling, we also want to consider tools without
+ # host prefixes.
+ extra_cc="gcc cc"
+ extra_cxx="g++ c++"
+ extra_ar="ar"
+ extra_ranlib="ranlib"
+ extra_windres="windres"
+fi
+
+for exe in $CC $host-gcc $host-cc $althost-gcc $althost-cc $extra_cc
+do
+ if check_run_command "$exe" "test.c" "test.c" <<"END"
+#include <stdio.h>
+int main()
+{
+ printf("Hello world!\n");
+ return 0;
+}
+END
+ then
+ CC="$exe"
+ break
+ fi
+done
+
+for exe in $CXX $host-g++ $host-c++ $althost-g++ $althost-c++ $extra_cxx
+do
+ if check_run_command "$exe" "test.cpp" "test.cpp" <<"END"
+#include <iostream>
+int main()
+{
+ std::cout << "Hello world!" << std::endl;
+ return 0;
+}
+END
+ then
+ CXX="$exe"
+ break
+ fi
+done
+
+for exe in $AR $host-ar $althost-ar $extra_ar
+do
+ if check_run_command "$exe" "--version"
+ then
+ AR="$exe"
+ break
+ fi
+done
+
+for exe in $RANLIB $host-ranlib $althost-ranlib $extra_ranlib
+do
+ if check_run_command "$exe" "--version"
+ then
+ RANLIB="$exe"
+ break
+ fi
+done
+
+if test x$HOST = xwin32
+then
+ for exe in $WINDRES $host-windres $althost-windres $extra_windres
+ do
+ if check_run_command "$exe" "--version"
+ then
+ WINDRES="$exe"
+ break
+ fi
+ done
+fi
+
+if test "x$CC" = x -o "x$CXX" = x -o "x$AR" = x -o "x$RANLIB" = x
+then
+ die <<END
+A working version of one or more of these required tools is missing:
+ CC = $CC
+ CXX = $CXX
+ AR = $AR
+ RANLIB = $RANLIB
+END
+fi
+
+
+#
+# Check for the libraries we need.
+#
+
+deps="sdl gl glu libpng openal vorbisfile lua"
+
+if test x$gtk = xyes
+then
+ deps="$deps gtk+-2.0"
+elif test x$qt4 = xyes
+then
+ deps="$deps QtGui"
+fi
+
+pc_cflags=$(pkg-config --cflags $deps)
+CFLAGS="$CFLAGS $pc_cflags"
+CXXFLAGS="$CXXFLAGS $pc_cflags"
+
+pc_ldflags=$(pkg-config --libs-only-L $deps)
+LDFLAGS="$LDFLAGS $pc_ldflags"
+
+pc_libs=$(pkg-config --libs-only-l $deps)
+LIBS="$LIBS $pc_libs"
+
+# Windows sockets are in libws2_32.
+if test x$HOST = xwin32
+then
+ LIBS="$LIBS -lws2_32"
+ EXEEXT=".exe"
+fi
+
+
+#
+# Find the game resources to install.
+#
+
+#data_files=$(echo $(find . -name "*.lua" \
+ #-o -name "*.ogg" \
+ #-o -name "*.png" \
+ #-o -name "yoinkrc"))
+# FIXME: doesn't work yet
+
+
+#
+# Define version components needed by src/yoink.rc.
+#
+
+vmajor=$(echo $VERSION | cut -d. -f1)
+vminor=$(echo $VERSION | cut -d. -f2)
+vrevis=$(echo $VERSION | cut -d. -f3)
+
+define "VERSION_MAJOR" "${vmajor:-0}"
+define "VERSION_MINOR" "${vminor:-0}"
+define "VERSION_REVISION" "${vrevis:-0}"
+
+
+#
+# Determine and define the git revision.
+#
+
+if githead=$(git log -n1 --date=short --pretty=format:"%h (%ad)")
+then
+ define_string "YOINK_GITHEAD" "$githead"
+fi
+
+
+#
+# Finalize the compiler flags, linker flags, and library list.
+#
+
+define_string "PACKAGE" "$PACKAGE"
+define_string "PACKAGE_NAME" "$PACKAGE"
+define_string "VERSION" "$VERSION"
+define_string "PACKAGE_VERSION" "$VERSION"
+define_string "PACKAGE_STRING" "$PACKAGE $VERSION"
+define_string "PACKAGE_BUGREPORT" "$BUGREPORT"
+
+CFLAGS=$(echo $CFLAGS $cflags $defines)
+CXXFLAGS=$(echo $CXXFLAGS $cflags $defines)
+LDFLAGS=$(echo $LDFLAGS)
+LIBS=$(echo $LIBS)
+
+
+#
+# All done; output the configuration file.
+#
+
+cat >config.mk <<END
+
+HOST = $HOST
+
+CC = $CC
+CXX = $CXX
+AR = $AR
+RANLIB = $RANLIB
+WINDRES = $WINDRES
+
+CFLAGS = $CFLAGS
+CXXFLAGS = $CXXFLAGS
+LDFLAGS = $LDFLAGS
+LIBS = $LIBS
+
+prefix = $prefix
+bindir = $bindir
+datadir = $datadir
+libdir = $libdir
+mandir = $mandir
+
+EXEEXT = $EXEEXT
+
+END
+
+
+echo ""
+echo " Configuration complete! Review your configuration in \`config.mk'":
+echo ""
+cat config.mk | grep -e "^prefix" \
+ -e "^datadir" \
+ -e "^CXX" \
+ -e "^CXXFLAGS" \
+ -e "^LDFLAGS" \
+ -e "^LIBS"
+echo ""
+echo " To finish the installation, type:"
+echo " make"
+echo " make install"
+echo ""
+
+++ /dev/null
-
-#
-# Yoink
-# Process this file with autoconf to produce a configure script.
-#
-
-AC_PREREQ(2.61)
-
-AC_INIT([Yoink],[0.1],[chaz@dogcows.com],[yoink])
-
-AC_CANONICAL_TARGET
-
-AC_CONFIG_SRCDIR([src/version.c])
-AC_CONFIG_MACRO_DIR([m4])
-
-AM_INIT_AUTOMAKE([dist-bzip2 no-dist-gzip])
-
-
-#
-# Determine the target platform.
-#
-
-case "${host}" in
- *mingw32*) WIN32=yes ;;
- *-apple-darwin*) MACOSX=yes ;;
- *netbsd*) NETBSD=yes ;;
-esac
-
-AM_CONDITIONAL([WIN32], [test x$WIN32 = xyes])
-AM_CONDITIONAL([MACOSX], [test x$MACOSX = xyes])
-AM_CONDITIONAL([NETBSD], [test x$NETBSD = xyes])
-
-
-#
-# Checks for configuration arguments.
-#
-
-AC_ARG_ENABLE([debug],
- [AS_HELP_STRING([--enable-debug],
- [include debugging symbols and code paths])],
- [debug=$enableval],
- [debug=no])
-
-AC_ARG_ENABLE([double-precision],
- [AS_HELP_STRING([--enable-double-precision],
- [use doubles instead of floats])],
- [double_precision=$enableval],
- [double_precision=no])
-
-AC_ARG_ENABLE([profile],
- [AS_HELP_STRING([--enable-profile],
- [make a binary with code profiling instructions])],
- [profile=$enableval],
- [profile=no])
-
-AC_ARG_ENABLE([extra-warnings],
- [AS_HELP_STRING([--enable-extra-warnings],
- [make the gcc compiler give more warnings])],
- [extra_warnings=$enableval],
- [extra_warnings=no])
-
-AC_ARG_ENABLE([link-sh],
- [AS_HELP_STRING([--enable-link-sh],
- [give the executable fewer direct dependencies])],
- [link_sh=$enableval],
- [link_sh=no])
-
-AC_ARG_ENABLE([clock_gettime],
- [AS_HELP_STRING([--enable-clock_gettime],
- [use clock_gettime() instead of SDL_GetTicks()])],
- [clock_gettime=$enableval],
- [clock_gettime=no])
-
-AC_ARG_ENABLE([threads],
- [AS_HELP_STRING([--enable-threads],
- [use threads for concurrency where appropriate])],
- [threads=$enableval],
- [threads=no])
-
-AC_ARG_ENABLE([hotloading],
- [AS_HELP_STRING([--enable-hotloading],
- [monitor assets and reload them when they change])],
- [hotloading=$enableval],
- [hotloading=no])
-
-AC_ARG_WITH([gtk],
- [AS_HELP_STRING([--with-gtk],
- [use gtk2 modal dialogs])],
- [gtk=$withval],
- [gtk=no])
-
-AC_ARG_WITH([qt4],
- [AS_HELP_STRING([--with-qt4],
- [use qt4 modal dialogs; overridden by --with-gtk])],
- [qt4=$withval],
- [qt4=no])
-
-
-if test x$debug = xyes
-then
- CFLAGS="$CFLAGS -DDEBUG -ggdb -O0 -Wall -Wno-uninitialized"
- CXXFLAGS="$CXXFLAGS -DDEBUG -ggdb -O0 -Wall -Wno-uninitialized"
-else
- CFLAGS="$CFLAGS -DNDEBUG"
- CXXFLAGS="$CXXFLAGS -DNDEBUG"
-fi
-
-if test x$double_precision = xyes
-then
- AC_DEFINE([USE_DOUBLE_PRECISION], 1,
- [Define to 1 if you want to use doubles instead of floats.])
-fi
-
-if test x$profile = xyes
-then
- CFLAGS="$CFLAGS -pg"
- CXXFLAGS="$CXXFLAGS -pg"
- AC_DEFINE([PROFILING_ENABLED], 1,
- [Define to 1 if profiling is built in.])
-fi
-
-if test x$extra_warnings = xyes
-then
- CFLAGS="$CFLAGS -Wextra -Wno-unused-parameter"
- CXXFLAGS="$CXXFLAGS -Wextra -Wno-unused-parameter"
-fi
-
-AM_CONDITIONAL([LINK_SH], [test x$link_sh = xyes])
-
-if test x$threads = xyes
-then
- AC_DEFINE([USE_THREADS], 1,
- [Define to 1 if you want to use threads when applicable.])
-fi
-
-if test x$hotloading = xyes
-then
- AC_DEFINE([USE_HOTLOADING], 1,
- [Define to 1 if you want to use hotloading assets.])
-fi
-
-if test x$gtk = xyes
-then
- AC_DEFINE([USE_GTK], 1,
- [Define to 1 if you want to use GTK+ modal dialogs.])
-elif test x$qt4 = xyes
-then
- AC_DEFINE([USE_QT4], 1,
- [Define to 1 if you want to use QT4 modal dialogs.])
-fi
-
-
-if test "x$prefix" = xNONE
-then
- prefix="$ac_default_prefix"
-fi
-
-if test x$WIN32 = xyes
-then
- DATADIR="data"
-else
- eval eval DATADIR="${datadir}/$PACKAGE"
-fi
-
-AC_SUBST([DATADIR])
-AC_DEFINE_UNQUOTED([YOINK_DATADIR], ["$DATADIR"],
- [Define to the path of the game asset directory.])
-
-
-####
-AC_MSG_NOTICE([Checks for programs.])
-####
-
-AC_PROG_CXX
-AC_PROG_CC
-AC_PROG_INSTALL
-AC_PROG_RANLIB
-AM_PROG_CC_C_O
-
-PKG_PROG_PKG_CONFIG
-
-AC_PATH_PROGS([CUT], [cut])
-if test x$CUT = x
-then
- AC_MSG_ERROR([The cut program is required.])
-fi
-
-AC_PATH_PROGS([FIND], [find])
-if test x$FIND = x
-then
- AC_MSG_ERROR([The find program is required.])
-fi
-
-if test x$WIN32 = xyes
-then
- AC_PATH_PROGS([WINDRES],
- [windres $host_alias-windres $host_os-windres])
- if test x$WINDRES = x
- then
- AC_MSG_ERROR([The windres program is required.])
- fi
-
- AC_PATH_PROGS([ZIP], [zip])
- if test x$ZIP = x
- then
- AC_MSG_WARN([The zip program is needed to build a portable package.])
- fi
-
- AC_PATH_PROGS([MAKENSIS], [makensis])
- if test x$MAKENSIS = x
- then
- AC_MSG_WARN([The makensis program is needed to build an installer.])
- fi
-
- AC_PATH_PROGS([GROFF], [groff])
- if test x$GROFF = x
- then
- AC_MSG_WARN([The groff program is needed to create the manual page.])
- fi
-elif test x$NETBSD = xyes
-then
- AC_PATH_PROGS([PKGLINT], [pkglint])
-fi
-
-AM_CONDITIONAL([HAVE_MAKENSIS], [test x$MAKENSIS != x])
-
-####
-AC_MSG_NOTICE([Checks for libraries.])
-####
-
-##### boost#####
-website="http://www.boost.org/"
-BOOST_BIND
-BOOST_FUNCTION
-BOOST_SMART_PTR
-BOOST_STRING_ALGO
-
-##### SDL #####
-website="http://www.libsdl.org/"
-PKG_CHECK_MODULES([SDL], [sdl],
- [LIBS="$LIBS $SDL_LIBS"
- CFLAGS="$CFLAGS $SDL_CFLAGS"
- CXXFLAGS="$CXXFLAGS $SDL_CFLAGS"],
- [missing=yes
- AC_MSG_WARN([Missing SDL ($website)])])
-
-##### opengl, glu #####
-website="http://www.mesa3d.org/"
-PKG_CHECK_MODULES([OPENGL], [gl glu],
- [LIBS="$LIBS $OPENGL_LIBS"
- CFLAGS="$CFLAGS $OPENGL_CFLAGS"
- CXXFLAGS="$CXXFLAGS $OPENGL_CFLAGS"],
- [missing=yes
- AC_MSG_WARN([Missing OpenGL ($website)])])
-
-##### libpng #####
-website="http://www.libpng.org/pub/png/libpng.html"
-PKG_CHECK_MODULES([PNG], [libpng],
- [LIBS="$LIBS $PNG_LIBS"
- CFLAGS="$CFLAGS $PNG_CFLAGS"
- CXXFLAGS="$CXXFLAGS $PNG_CFLAGS"],
- [missing=yes
- AC_MSG_WARN([Missing libpng ($website)])])
-
-##### openal #####
-website="http://connect.creativelabs.com/openal/"
-PKG_CHECK_MODULES([OPENAL], [openal],
- [LIBS="$LIBS $OPENAL_LIBS"
- CFLAGS="$CFLAGS $OPENAL_CFLAGS"
- CXXFLAGS="$CXXFLAGS $OPENAL_CFLAGS"],
- [missing=yes
- AC_MSG_WARN([Missing OpenAL ($website)])])
-
-##### libvorbis #####
-website="http://www.xiph.org/downloads/"
-PKG_CHECK_MODULES([VORBIS], [vorbisfile],
- [LIBS="$LIBS $VORBIS_LIBS"
- CFLAGS="$CFLAGS $VORBIS_CFLAGS"
- CXXFLAGS="$CXXFLAGS $VORBIS_CFLAGS"],
- [missing=yes
- AC_MSG_WARN([Missing libvorbisfile ($website)])])
-
-##### liblua #####
-website="http://www.lua.org/"
-PKG_CHECK_MODULES([LUA], [lua],
- [LIBS="$LIBS $LUA_LIBS"
- CFLAGS="$CFLAGS $LUA_CFLAGS"
- CXXFLAGS="$CXXFLAGS $LUA_CFLAGS"],
- [missing=yes
- AC_MSG_WARN([Missing liblua ($website)])])
-
-##### GTK+ 2.0 #####
-if test x$gtk = xyes
-then
- website="http://www.gtk.org/"
- PKG_CHECK_MODULES([GTK], [gtk+-2.0],
- [LIBS="$LIBS $GTK_LIBS"
- CFLAGS="$CFLAGS $GTK_CFLAGS"
- CXXFLAGS="$CXXFLAGS $GTK_CFLAGS"],
- [missing=yes
- AC_MSG_WARN([Missing GTK+-2.0 ($website)])])
-fi
-
-##### QT4 #####
-if test x$qt4 = xyes
-then
- website="http://qt.nokia.com/"
- PKG_CHECK_MODULES([QT4], [QtGui],
- [LIBS="$LIBS $QT4_LIBS"
- CFLAGS="$CFLAGS $QT4_CFLAGS"
- CXXFLAGS="$CXXFLAGS $QT4_CFLAGS"],
- [missing=yes
- AC_MSG_WARN([Missing QT4 ($website)])])
-fi
-
-if test x$WIN32 = xyes
-then
- # On Windows, sockets are in the ws2_32 library.
- LIBS="$LIBS -lws2_32"
-fi
-
-if test x$missing = xyes
-then
- AC_MSG_ERROR([You are missing some required libraries.])
-fi
-
-
-####
-AC_MSG_NOTICE([Checks for header files.])
-####
-
-AC_HEADER_STDBOOL
-AC_HEADER_STDC
-AC_CHECK_HEADERS([arpa/inet.h byteswap.h fcntl.h stddef.h stdint.h stdlib.h string.h unistd.h])
-
-
-####
-AC_MSG_NOTICE([Checks for types.])
-####
-
-AC_TYPE_UINT8_T
-AC_TYPE_UINT16_T
-AC_TYPE_UINT32_T
-AC_TYPE_UINT64_T
-AC_TYPE_SIZE_T
-
-
-####
-AC_MSG_NOTICE([Checks for compiler characteristics.])
-####
-
-AC_C_STRINGIZE
-AC_C_INLINE
-
-
-####
-AC_MSG_NOTICE([Checks for library functions.])
-####
-
-AC_FUNC_ERROR_AT_LINE
-AC_FUNC_STRTOD
-AC_CHECK_FUNCS([fcntl nanosleep strchr strcspn strrchr strstr])
-
-if test x$clock_gettime = xyes
-then
- AC_SEARCH_LIBS([clock_gettime], [rt],
- [clock_gettime=yes],
- [clock_gettime=no])
- if test x$clock_gettime = xyes
- then
- AC_DEFINE([HAVE_CLOCK_GETTIME], 1,
- [Define to 1 if you have the 'clock_gettime' function.])
- else
- AC_MSG_WARN([Falling back to SDL_GetTicks().])
- fi
-fi
-
-
-#
-# Find the game resources to install.
-#
-
-DATA_FILES=$(echo $(cd data && find . -name "*.lua" \
- -o -name "*.ogg" \
- -o -name "*.png" \
- -o -name "yoinkrc"))
-AC_SUBST([DATA_FILES])
-
-
-#
-# Split the version number into components.
-# These definitions are used in the win32 resource file, src/yoink.rc.
-#
-
-VERSION_MAJOR=$(echo $VERSION | cut -d. -f1)
-VERSION_MINOR=$(echo $VERSION | cut -d. -f2)
-VERSION_REVISION=$(echo $VERSION | cut -d. -f3)
-
-AC_DEFINE_UNQUOTED([VERSION_MAJOR], [${VERSION_MAJOR:-0}],
- [Define to major version number component.])
-
-AC_DEFINE_UNQUOTED([VERSION_MINOR], [${VERSION_MINOR:-0}],
- [Define to minor version number component.])
-
-AC_DEFINE_UNQUOTED([VERSION_REVISION], [${VERSION_REVISION:-0}],
- [Define to revision version number component.])
-
-PVERSION="${VERSION_MAJOR:-0}.${VERSION_MINOR:-0}.${VERSION_REVISION:-0}.0"
-AC_SUBST([PVERSION])
-
-if githead=$(git log -n1 --date=short --pretty=format:"%h (%ad)")
-then
- AC_DEFINE_UNQUOTED([YOINK_GITHEAD], ["$githead"],
- [Define to the git commit currently checked out.])
-fi
-
-
-#
-# Create the build files.
-#
-
-AC_CONFIG_FILES([Makefile
- data/Makefile
- doc/yoink.6
- src/Makefile])
-
-AC_CONFIG_HEADERS([src/config.h])
-
-AC_OUTPUT
-
-
-#
-# Print a friendly little message.
-#
-
-echo ""
-echo " Configuration complete! :-)"
-echo ""
-echo " Host: $target"
-echo " Prefix: $prefix"
-echo " Data: $DATADIR"
-echo ""
-echo " CXX: $CXX"
-echo " CXXFLAGS: $(echo $CXXFLAGS)"
-echo " LIBS: $(echo $LIBS)"
-echo ""
-echo " To finish the installation, execute:"
-echo " make"
-echo " make install"
-echo ""
-
# Define rules and targets for data files.
#
-TGTS_$(d) := $(DATA_FILES)
-
-# TODO: Also need to install yoink.desktop and the pixmap.
+ASSETS_$(d) := $(shell find $(d) -name "*.lua" \
+ -o -name "*.ogg" \
+ -o -name "*.png" | sed -e 's=^$(d)\(.*\)/.*=&;\1=g') $(d)/yoinkrc;
+DATAFILES := $(DATAFILES) $(ASSETS_$(d))
-TGT_DATA := $(TGT_DATA) $(DATA_FILES)
+# TODO: Also need to install yoink.desktop and the pixmap.
#######################
#########################
#
-# Define rules and targets for data files.
+# Define rules and targets for man pages.
#
-TGTS_$(d) := $(d)/yoink.6.in
+MANPAGE_$(d) := $(d)/yoink.6
+MANPAGES := $(MANPAGES) $(MANPAGE_$(d))
-TGT_MAN := $(TGT_MAN) $(DATA_FILES)
+MANPAGE_$(d):
+ @export BUGREPORT=hello ;\
+ $(call DO_IN,$<,$@)
#######################
through options passed as program arguments or given in config files.
\fByoink\fP looks for config files in several locations and in this order:
.TP
-1. \fI@DATADIR@/yoinkrc\fP
+1. \fI@HOME@/yoinkrc\fP
This is the base config file which should be considered read-only. Look to
this file as an example of the format used for config files.
.TP
.PP
Send bug reports, patches and love notes to:
.IP
-Charles McGarvey <@PACKAGE_BUGREPORT@>
+Charles McGarvey <@BUGREPORT@>
.SH AUTHOR
.PP
Neil Carter was the original creator of Yoink, his winning entry in the
+++ /dev/null
-#!/bin/sh
-
-#
-# Yoink
-# Run this script to link the executable with fewer direct dependencies.
-#
-# You shouldn't call this directly; instead, use the configure script's
-# --enable-link-sh option and run make normally. This isn't enabled by
-# default because there is the potential for runtime linking problems on
-# some platforms. If you have a newer version of GCC, you should prefer
-# the --as-needed linker flag over this method, though they both should
-# accomplish the same thing.
-#
-# This script was adapted from some public domain code written by Bram
-# Moolenaar for Vim. The only input needed is the link command in the
-# variable LINK. It is expected that the linker will return an error code
-# or this will not work. The script caches the test results in the
-# `.link/link.sed' file; delete that file if you want to redetermine the
-# required direct dependencies.
-#
-
-
-# List here any libraries that are known to not be needed on some platform.
-libraries="\
- atk-1.0 \
- cairo \
- fontconfig \
- freetype \
- gdk-x11-2.0 \
- gio-2.0 \
- glib-2.0 \
- gmodule-2.0 \
- ogg \
- pango-1.0 \
- pangocairo-1.0 \
- pangoft2-1.0 \
- pthread \
- vorbis \
- $THE_END"
-
-
-linkdir=".link"
-logfile="$linkdir/link.log"
-sedfile="$linkdir/link.sed"
-
-workdir=$(mktemp -d tmp.XXXXXXXX)
-cmdfile="$workdir/link.cmd"
-runfile="$workdir/link.run"
-
-tmpfile1="$workdir/link.tmp1"
-tmpfile2="$workdir/link.tmp2"
-tmpfile3="$workdir/link.tmp3"
-
-
-printlog()
-{
- echo "link.sh: $@"
-}
-
-echo "$LINK " >$cmdfile
-exitcode=0
-
-
-if test -f $sedfile
-then
- printlog "The file $sedfile exists, which is now going to be used."
- printlog "If linking fails, try deleting the $sedfile file."
- printlog "If that fails, try creating an empty $sedfile file."
- printlog "If that fails, configure the package with --disable-link-sh."
-else
- cat $cmdfile
- if sh $cmdfile
- then
- mkdir -p $linkdir
- touch $sedfile
- cp $cmdfile $runfile
- for libname in $libraries
- do
- cont=yes
- while test -n "$cont"
- do
- if grep "l$libname " $runfile >/dev/null
- then
- if test ! -f $tmpfile1
- then
- printlog "Full linking works; now the fun begins."
- printlog "See $logfile for details."
- rm -f $logfile
- fi
- echo "s/-l$libname *//" >$tmpfile1
- sed -f $sedfile <$cmdfile | sed -f $tmpfile1 >$runfile
- # keep the last -lm; this is supposedly needed by HP-UX
- if test $libname != "m" || grep "lm " $runfile >/dev/null
- then
- printlog "Trying to remove the $libname library..."
- cat $runfile >>$logfile
- if sh $runfile >>$logfile 2>&1
- then
- printlog "We don't need the $libname library!"
- cat $tmpfile1 >>$sedfile
- continue
- else
- printlog "We DO need the $libname library."
- fi
- fi
- fi
- cont=
- cp $cmdfile $runfile
- done
- done
- if test ! -f $tmpfile1
- then
- printlog "Linked fine, no libraries can be removed."
- touch $tmpfile3
- fi
- else
- exitcode=$?
- fi
-fi
-
-
-if test -s $sedfile
-then
- printlog "Using $sedfile file to remove a few libraries."
- sed -f $sedfile <$cmdfile >$runfile
- cat $runfile
- if sh $runfile
- then
- exitcode=0
- printlog "Linked fine with a few libraries removed."
- else
- exitcode=$?
- printlog "Linking failed, making $sedfile empty and trying again."
- mv -f $sedfile $tmpfile2
- touch $sedfile
- fi
-fi
-
-if test -f $sedfile -a ! -s $sedfile -a ! -f $tmpfile3
-then
- printlog "Using unmodified link command."
- cat $cmdfile
- if sh $cmdfile
- then
- exitcode=0
- printlog "Linked OK."
- else
- exitcode=$?
- if test -f $tmpfile2
- then
- printlog "Linking doesn't work at all, removing $sedfile."
- rm -f $sedfile
- fi
- fi
-fi
-
-
-rm -rf "$workdir"
-exit $exitcode
-
+++ /dev/null
-
-#
-# Yoink
-# Process this file with automake to produce a Makefile.
-#
-
-
-#
-# libstlplus.a
-#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-noinst_LIBRARIES = libstlplus.a
-
-libstlplus_a_SOURCES = \
- stlplus/containers/containers.hpp \
- stlplus/containers/containers_fixes.hpp \
- stlplus/containers/copy_functors.hpp \
- stlplus/containers/digraph.hpp \
- stlplus/containers/digraph.tpp \
- stlplus/containers/exceptions.hpp \
- stlplus/containers/foursome.hpp \
- stlplus/containers/foursome.tpp \
- stlplus/containers/hash.hpp \
- stlplus/containers/hash.tpp \
- stlplus/containers/matrix.hpp \
- stlplus/containers/matrix.tpp \
- stlplus/containers/ntree.hpp \
- stlplus/containers/ntree.tpp \
- stlplus/containers/safe_iterator.hpp \
- stlplus/containers/safe_iterator.tpp \
- stlplus/containers/simple_ptr.hpp \
- stlplus/containers/simple_ptr.tpp \
- stlplus/containers/smart_ptr.hpp \
- stlplus/containers/smart_ptr.tpp \
- stlplus/containers/triple.hpp \
- stlplus/containers/triple.tpp \
- stlplus/persistence/persistence.hpp \
- stlplus/persistence/persistence_fixes.hpp \
- stlplus/persistence/persistent.hpp \
- stlplus/persistence/persistent_basic.hpp \
- stlplus/persistence/persistent_bitset.hpp \
- stlplus/persistence/persistent_bitset.tpp \
- stlplus/persistence/persistent_bool.cpp \
- stlplus/persistence/persistent_bool.hpp \
- stlplus/persistence/persistent_callback.hpp \
- stlplus/persistence/persistent_callback.tpp \
- stlplus/persistence/persistent_complex.hpp \
- stlplus/persistence/persistent_complex.tpp \
- stlplus/persistence/persistent_contexts.cpp \
- stlplus/persistence/persistent_contexts.hpp \
- stlplus/persistence/persistent_cstring.cpp \
- stlplus/persistence/persistent_cstring.hpp \
- stlplus/persistence/persistent_deque.hpp \
- stlplus/persistence/persistent_deque.tpp \
- stlplus/persistence/persistent_digraph.hpp \
- stlplus/persistence/persistent_digraph.tpp \
- stlplus/persistence/persistent_enum.hpp \
- stlplus/persistence/persistent_enum.tpp \
- stlplus/persistence/persistent_exceptions.cpp \
- stlplus/persistence/persistent_exceptions.hpp \
- stlplus/persistence/persistent_float.cpp \
- stlplus/persistence/persistent_float.hpp \
- stlplus/persistence/persistent_foursome.hpp \
- stlplus/persistence/persistent_foursome.tpp \
- stlplus/persistence/persistent_hash.hpp \
- stlplus/persistence/persistent_hash.tpp \
- stlplus/persistence/persistent_inf.cpp \
- stlplus/persistence/persistent_inf.hpp \
- stlplus/persistence/persistent_int.cpp \
- stlplus/persistence/persistent_int.hpp \
- stlplus/persistence/persistent_interface.hpp \
- stlplus/persistence/persistent_interface.tpp \
- stlplus/persistence/persistent_list.hpp \
- stlplus/persistence/persistent_list.tpp \
- stlplus/persistence/persistent_map.hpp \
- stlplus/persistence/persistent_map.tpp \
- stlplus/persistence/persistent_matrix.hpp \
- stlplus/persistence/persistent_matrix.tpp \
- stlplus/persistence/persistent_multimap.hpp \
- stlplus/persistence/persistent_multimap.tpp \
- stlplus/persistence/persistent_multiset.hpp \
- stlplus/persistence/persistent_multiset.tpp \
- stlplus/persistence/persistent_ntree.hpp \
- stlplus/persistence/persistent_ntree.tpp \
- stlplus/persistence/persistent_pair.hpp \
- stlplus/persistence/persistent_pair.tpp \
- stlplus/persistence/persistent_pointer.hpp \
- stlplus/persistence/persistent_pointer.tpp \
- stlplus/persistence/persistent_pointers.hpp \
- stlplus/persistence/persistent_set.hpp \
- stlplus/persistence/persistent_set.tpp \
- stlplus/persistence/persistent_shortcuts.hpp \
- stlplus/persistence/persistent_shortcuts.tpp \
- stlplus/persistence/persistent_simple_ptr.hpp \
- stlplus/persistence/persistent_simple_ptr.tpp \
- stlplus/persistence/persistent_smart_ptr.hpp \
- stlplus/persistence/persistent_smart_ptr.tpp \
- stlplus/persistence/persistent_stl.hpp \
- stlplus/persistence/persistent_stlplus.hpp \
- stlplus/persistence/persistent_string.cpp \
- stlplus/persistence/persistent_string.hpp \
- stlplus/persistence/persistent_string.tpp \
- stlplus/persistence/persistent_triple.hpp \
- stlplus/persistence/persistent_triple.tpp \
- stlplus/persistence/persistent_vector.cpp \
- stlplus/persistence/persistent_vector.hpp \
- stlplus/persistence/persistent_vector.tpp \
- stlplus/persistence/persistent_xref.hpp \
- stlplus/persistence/persistent_xref.tpp \
- stlplus/portability/build.cpp \
- stlplus/portability/build.hpp \
- stlplus/portability/debug.cpp \
- stlplus/portability/debug.hpp \
- stlplus/portability/dprintf.cpp \
- stlplus/portability/dprintf.hpp \
- stlplus/portability/dynaload.cpp \
- stlplus/portability/dynaload.hpp \
- stlplus/portability/file_system.cpp \
- stlplus/portability/file_system.hpp \
- stlplus/portability/inf.cpp \
- stlplus/portability/inf.hpp \
- stlplus/portability/ip_sockets.cpp \
- stlplus/portability/ip_sockets.hpp \
- stlplus/portability/portability.hpp \
- stlplus/portability/portability_exceptions.hpp \
- stlplus/portability/portability_fixes.cpp \
- stlplus/portability/portability_fixes.hpp \
- stlplus/portability/subprocesses.cpp \
- stlplus/portability/subprocesses.hpp \
- stlplus/portability/tcp.hpp \
- stlplus/portability/tcp_sockets.cpp \
- stlplus/portability/tcp_sockets.hpp \
- stlplus/portability/time.cpp \
- stlplus/portability/time.hpp \
- stlplus/portability/udp_sockets.cpp \
- stlplus/portability/udp_sockets.hpp \
- stlplus/portability/version.cpp \
- stlplus/portability/version.hpp \
- stlplus/portability/wildcard.cpp \
- stlplus/portability/wildcard.hpp \
- stlplus/strings/format_types.hpp \
- stlplus/strings/print_address.cpp \
- stlplus/strings/print_address.hpp \
- stlplus/strings/print_basic.hpp \
- stlplus/strings/print_bitset.hpp \
- stlplus/strings/print_bitset.tpp \
- stlplus/strings/print_bool.cpp \
- stlplus/strings/print_bool.hpp \
- stlplus/strings/print_cstring.cpp \
- stlplus/strings/print_cstring.hpp \
- stlplus/strings/print_digraph.hpp \
- stlplus/strings/print_digraph.tpp \
- stlplus/strings/print_float.cpp \
- stlplus/strings/print_float.hpp \
- stlplus/strings/print_foursome.hpp \
- stlplus/strings/print_foursome.tpp \
- stlplus/strings/print_hash.hpp \
- stlplus/strings/print_hash.tpp \
- stlplus/strings/print_inf.cpp \
- stlplus/strings/print_inf.hpp \
- stlplus/strings/print_int.cpp \
- stlplus/strings/print_int.hpp \
- stlplus/strings/print_list.hpp \
- stlplus/strings/print_list.tpp \
- stlplus/strings/print_map.hpp \
- stlplus/strings/print_map.tpp \
- stlplus/strings/print_matrix.hpp \
- stlplus/strings/print_matrix.tpp \
- stlplus/strings/print_ntree.hpp \
- stlplus/strings/print_ntree.tpp \
- stlplus/strings/print_pair.hpp \
- stlplus/strings/print_pair.tpp \
- stlplus/strings/print_pointer.hpp \
- stlplus/strings/print_pointer.tpp \
- stlplus/strings/print_sequence.hpp \
- stlplus/strings/print_sequence.tpp \
- stlplus/strings/print_set.hpp \
- stlplus/strings/print_set.tpp \
- stlplus/strings/print_simple_ptr.hpp \
- stlplus/strings/print_simple_ptr.tpp \
- stlplus/strings/print_smart_ptr.hpp \
- stlplus/strings/print_smart_ptr.tpp \
- stlplus/strings/print_stl.hpp \
- stlplus/strings/print_stlplus.hpp \
- stlplus/strings/print_string.cpp \
- stlplus/strings/print_string.hpp \
- stlplus/strings/print_triple.hpp \
- stlplus/strings/print_triple.tpp \
- stlplus/strings/print_vector.cpp \
- stlplus/strings/print_vector.hpp \
- stlplus/strings/print_vector.tpp \
- stlplus/strings/string_address.cpp \
- stlplus/strings/string_address.hpp \
- stlplus/strings/string_basic.hpp \
- stlplus/strings/string_bitset.hpp \
- stlplus/strings/string_bitset.tpp \
- stlplus/strings/string_bool.cpp \
- stlplus/strings/string_bool.hpp \
- stlplus/strings/string_cstring.cpp \
- stlplus/strings/string_cstring.hpp \
- stlplus/strings/string_digraph.hpp \
- stlplus/strings/string_digraph.tpp \
- stlplus/strings/string_float.cpp \
- stlplus/strings/string_float.hpp \
- stlplus/strings/string_foursome.hpp \
- stlplus/strings/string_foursome.tpp \
- stlplus/strings/string_hash.hpp \
- stlplus/strings/string_hash.tpp \
- stlplus/strings/string_inf.cpp \
- stlplus/strings/string_inf.hpp \
- stlplus/strings/string_int.cpp \
- stlplus/strings/string_int.hpp \
- stlplus/strings/string_list.hpp \
- stlplus/strings/string_list.tpp \
- stlplus/strings/string_map.hpp \
- stlplus/strings/string_map.tpp \
- stlplus/strings/string_matrix.hpp \
- stlplus/strings/string_matrix.tpp \
- stlplus/strings/string_ntree.hpp \
- stlplus/strings/string_ntree.tpp \
- stlplus/strings/string_pair.hpp \
- stlplus/strings/string_pair.tpp \
- stlplus/strings/string_pointer.hpp \
- stlplus/strings/string_pointer.tpp \
- stlplus/strings/string_sequence.hpp \
- stlplus/strings/string_sequence.tpp \
- stlplus/strings/string_set.hpp \
- stlplus/strings/string_set.tpp \
- stlplus/strings/string_simple_ptr.hpp \
- stlplus/strings/string_simple_ptr.tpp \
- stlplus/strings/string_smart_ptr.hpp \
- stlplus/strings/string_smart_ptr.tpp \
- stlplus/strings/string_stl.hpp \
- stlplus/strings/string_stlplus.hpp \
- stlplus/strings/string_string.cpp \
- stlplus/strings/string_string.hpp \
- stlplus/strings/string_triple.hpp \
- stlplus/strings/string_triple.tpp \
- stlplus/strings/string_utilities.cpp \
- stlplus/strings/string_utilities.hpp \
- stlplus/strings/string_vector.cpp \
- stlplus/strings/string_vector.hpp \
- stlplus/strings/string_vector.tpp \
- stlplus/strings/strings.hpp \
- stlplus/strings/strings_fixes.hpp \
- stlplus/subsystems/cli_parser.cpp \
- stlplus/subsystems/cli_parser.hpp \
- stlplus/subsystems/ini_manager.cpp \
- stlplus/subsystems/ini_manager.hpp \
- stlplus/subsystems/library_manager.cpp \
- stlplus/subsystems/library_manager.hpp \
- stlplus/subsystems/message_handler.cpp \
- stlplus/subsystems/message_handler.hpp \
- stlplus/subsystems/subsystems.hpp \
- stlplus/subsystems/subsystems_fixes.hpp \
- stlplus/subsystems/timer.cpp \
- stlplus/subsystems/timer.hpp \
- $(ENDLIST)
-
-
-#
-# libmoof.a
-#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-noinst_LIBRARIES = libmoof.a
-
-#libmoof_a_CPPFLAGS = -I$(top_srcdir)/src/moof
-
-libmoof_a_SOURCES = \
- moof/aabb.cc \
- moof/aabb.hh \
- moof/backend.cc \
- moof/backend.hh \
- moof/camera.cc \
- moof/camera.hh \
- moof/contact.hh \
- moof/ConvertUTF.c \
- moof/ConvertUTF.h \
- moof/cullable.hh \
- moof/dispatcher.cc \
- moof/dispatcher.hh \
- moof/drawable.hh \
- moof/entity.hh \
- moof/event.hh \
- moof/frustum.cc \
- moof/frustum.hh \
- moof/hash.cc \
- moof/hash.hh \
- moof/image.cc \
- moof/image.hh \
- moof/interpolator.hh \
- moof/line.hh \
- moof/log.cc \
- moof/log.hh \
- moof/manager.hh \
- moof/math.hh \
- moof/modal_dialog.hh \
- moof/network.hh \
- moof/opengl.hh \
- moof/packet.cc \
- moof/packet.hh \
- moof/plane.cc \
- moof/plane.hh \
- moof/ray.hh \
- moof/resource.cc \
- moof/resource.hh \
- moof/rigid_body.hh \
- moof/script.hh \
- moof/service.cc \
- moof/service.hh \
- moof/settings.cc \
- moof/settings.hh \
- moof/shape.hh \
- moof/socket.hh \
- moof/sound.cc \
- moof/sound.hh \
- moof/sphere.hh \
- moof/string.cc \
- moof/string.hh \
- moof/texture.cc \
- moof/texture.hh \
- moof/thread.hh \
- moof/timer.cc \
- moof/timer.hh \
- moof/video.cc \
- moof/video.hh \
- moof/view.cc \
- moof/view.hh \
- moof/fastevents.c \
- moof/fastevents.h \
- $(ENDLIST)
-
-EXTRA_DIST = cml
-
-
-#
-# yoink
-#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-bin_PROGRAMS = yoink
-
-#yoink_CPPFLAGS = -I$(top_srcdir)/src/moof
-yoink_LDADD = libstlplus.a libmoof.a
-
-yoink_SOURCES = \
- Animation.cc \
- Animation.hh \
- Character.cc \
- Character.hh \
- GameLayer.cc \
- GameLayer.hh \
- GameState.hh \
- Heroine.cc \
- Heroine.hh \
- Hud.cc \
- Hud.hh \
- Main.cc \
- Main.hh \
- Scene.cc \
- Scene.hh \
- TilemapFont.cc \
- TilemapFont.hh \
- TitleLayer.cc \
- TitleLayer.hh \
- Typesetter.cc \
- Typesetter.hh \
- version.c \
- version.h \
- $(ENDLIST)
-
-if WIN32
-yoink_SOURCES += yoink.rc
-.rc.o:
- $(WINDRES) -o $@ -i $<
-else
-YOINK_ENVIRONMENT = YOINK_DATADIR="$(top_srcdir)/data"
-run: all
- $(YOINK_ENVIRONMENT) ./yoink $(YOINK_OPTS)
-
-debug: all
- $(YOINK_ENVIRONMENT) gdb ./yoink
-endif
-
-if LINK_SH
-yoink$(EXEEXT): $(yoink_OBJECTS) $(yoink_DEPENDENCIES)
- @rm -f yoink$(EXEEXT)
- @LINK="$(CXXLINK) $(yoink_OBJECTS) $(yoink_LDADD) $(LIBS)"\
- sh $(top_srcdir)/link.sh
-
-clean-local:
- rm -f .link/*
-endif
-
# Define rules and targets for libmoof.
#
-OBJS_$(d) := \
- $(d)/ConvertUTF.o \
- $(d)/aabb.o \
- $(d)/backend.o \
- $(d)/camera.o \
- $(d)/dispatcher.o \
- $(d)/fastevents.o \
- $(d)/frustum.o \
- $(d)/hash.o \
- $(d)/image.o \
- $(d)/log.o \
- $(d)/packet.o \
- $(d)/plane.o \
- $(d)/resource.o \
- $(d)/service.o \
- $(d)/settings.o \
- $(d)/sound.o \
- $(d)/string.o \
- $(d)/texture.o \
- $(d)/timer.o \
- $(d)/video.o \
- $(d)/view.o \
- $(_END_)
-
-TGTS_$(d) := $(d)/libmoof.a
-DEPS_$(d) := $(OBJS_$(d):%=%.d)
-
-CLEAN := $(CLEAN) $(OBJS_$(d)) $(DEPS_$(d)) $(TGTS_$(d))
-
-
-$(OBJS_$(d)): CF_TGT := -I$(d) -I$(d)/..
-$(OBJS_$(d)): $(d)/rules.mk
-
-$(TGTS_$(d)): $(OBJS_$(d))
+OBJECTS_$(d) := $(patsubst %.c,%.o,$(wildcard $(d)/*.c)) \
+ $(patsubst %.cc,%.o,$(wildcard $(d)/*.cc))
+D_FILES_$(d) := $(OBJECTS_$(d):%=%.d)
+
+LIBRARY_$(d) := $(d)/libmoof.a
+
+CLEAN := $(CLEAN) $(OBJECTS_$(d)) $(D_FILES_$(d)) $(LIBRARY_$(d))
+
+$(OBJECTS_$(d)): CF_TGT := -I$(d) -I$(d)/..
+$(OBJECTS_$(d)): $(d)/rules.mk
+
+$(LIBRARY_$(d)): $(OBJECTS_$(d))
$(DO_AR)
-#######################
--include $(DEPS_$(d))
+########################
+-include $(D_FILES_$(d))
d := $(dirstack_$(sp))
sp := $(basename $(sp))
-#######################
+########################
+++ /dev/null
-
-/*] Copyright (c) 2009-2010, Charles McGarvey [**************************
-**] All rights reserved.
-*
-* vi:ts=4 sw=4 tw=75
-*
-* Distributable under the terms and conditions of the 2-clause BSD license;
-* see the file COPYING for a complete text of the license.
-*
-**************************************************************************/
-
-#include "frustum.hh"
-#include "opengl.hh"
-#include "sphere.hh"
-
-
-namespace moof {
-
-
-void sphere::enclose_vertices(const vector3 vertices[], unsigned count)
-{
- // TODO
-}
-
-void sphere::draw(scalar alpha) const
-{
- GLUquadricObj* sphereObj = gluNewQuadric();
- gluQuadricDrawStyle(sphereObj, GLU_LINE);
-
- glPushMatrix();
-
- //glTranslate(point[0], point[1], point[2]);
- glTranslate(point);
- gluSphere(sphereObj, (GLdouble)radius, 16, 16);
-
- glPopMatrix();
-
- gluDeleteQuadric(sphereObj);
-}
-
-bool sphere::is_visible(const frustum& frustum) const
-{
- return frustum.contains(*this);
-}
-
-
-} // namespace moof
-
# Define rules and targets for Yoink.
#
-OBJS_$(d) := \
- $(d)/Animation.o \
- $(d)/Character.o \
- $(d)/GameLayer.o \
- $(d)/Heroine.o \
- $(d)/Hud.o \
- $(d)/Main.o \
- $(d)/Scene.o \
- $(d)/TilemapFont.o \
- $(d)/TitleLayer.o \
- $(d)/Typesetter.o \
- $(d)/version.o \
- $(_END_)
+OBJECTS_$(d) := $(patsubst %.c,%.o,$(wildcard $(d)/*.c)) \
+ $(patsubst %.cc,%.o,$(wildcard $(d)/*.cc))
+D_FILES_$(d) := $(OBJECTS_$(d):%=%.d)
ifeq ($(HOST),win32)
-OBJS_$(d) += $(d)/yoink.o
+OBJECTS_$(d) += $(d)/yoink.o
endif
-TGTS_$(d) := $(d)/yoink$(EXEEXT)
-DEPS_$(d) := $(OBJS_$(d):%=%.d)
+PROGRAM_$(d) := $(call add_exe_suffix,$(d)/yoink)
-TGT_BIN := $(TGT_BIN) $(TGTS_$(d))
-CLEAN := $(CLEAN) $(OBJS_$(d)) $(DEPS_$(d)) $(TGTS_$(d))
+BINARIES := $(BINARIES) $(PROGRAM_$(d))
+CLEAN := $(CLEAN) $(OBJECTS_$(d)) $(D_FILES_$(d)) $(PROGRAM_$(d))
+$(OBJECTS_$(d)): CF_TGT := -I$(d)
+$(OBJECTS_$(d)): $(d)/rules.mk
-$(OBJS_$(d)): CF_TGT := -I$(d)
-$(OBJS_$(d)): $(d)/rules.mk
-
-$(TGTS_$(d)): $(OBJS_$(d)) $(d)/moof/libmoof.a $(d)/stlplus/libstlplus.a
+$(PROGRAM_$(d)): $(OBJECTS_$(d)) $(d)/moof/libmoof.a $(d)/stlplus/libstlplus.a
$(DO_LDX)
YOINK_ENVIRONMENT = YOINK_DATADIR="./data"
.PHONY: run
-run: $(TGTS_$(d))
+run: $(PROGRAM_$(d))
@$(YOINK_ENVIRONMENT) $< $(YOINK_OPTS)
.PHONY: debug
-debug: $(TGTS_$(d))
+debug: $(PROGRAM_$(d))
@$(YOINK_ENVIRONMENT) gdb $<
-#######################
--include $(DEPS_$(d))
+########################
+-include $(D_FILES_$(d))
d := $(dirstack_$(sp))
sp := $(basename $(sp))
-#######################
+########################
d := $(dir)
#########################
-
#
# Define rules and targets for libstlplus.
#
-OBJS_$(d) := \
- $(d)/persistence/persistent_bool.o \
- $(d)/persistence/persistent_contexts.o \
- $(d)/persistence/persistent_cstring.o \
- $(d)/persistence/persistent_exceptions.o \
- $(d)/persistence/persistent_float.o \
- $(d)/persistence/persistent_inf.o \
- $(d)/persistence/persistent_int.o \
- $(d)/persistence/persistent_string.o \
- $(d)/persistence/persistent_vector.o \
- $(d)/portability/build.o \
- $(d)/portability/debug.o \
- $(d)/portability/dprintf.o \
- $(d)/portability/dynaload.o \
- $(d)/portability/file_system.o \
- $(d)/portability/inf.o \
- $(d)/portability/ip_sockets.o \
- $(d)/portability/portability_fixes.o \
- $(d)/portability/subprocesses.o \
- $(d)/portability/tcp_sockets.o \
- $(d)/portability/time.o \
- $(d)/portability/udp_sockets.o \
- $(d)/portability/version.o \
- $(d)/portability/wildcard.o \
- $(d)/strings/print_address.o \
- $(d)/strings/print_bool.o \
- $(d)/strings/print_cstring.o \
- $(d)/strings/print_float.o \
- $(d)/strings/print_inf.o \
- $(d)/strings/print_int.o \
- $(d)/strings/print_string.o \
- $(d)/strings/print_vector.o \
- $(d)/strings/string_address.o \
- $(d)/strings/string_bool.o \
- $(d)/strings/string_cstring.o \
- $(d)/strings/string_float.o \
- $(d)/strings/string_inf.o \
- $(d)/strings/string_int.o \
- $(d)/strings/string_string.o \
- $(d)/strings/string_utilities.o \
- $(d)/strings/string_vector.o \
- $(d)/subsystems/cli_parser.o \
- $(d)/subsystems/ini_manager.o \
- $(d)/subsystems/library_manager.o \
- $(d)/subsystems/message_handler.o \
- $(d)/subsystems/timer.o \
- $(_END_)
-
-TGTS_$(d) := $(d)/libstlplus.a
-DEPS_$(d) := $(OBJS_$(d):%=%.d)
+OBJECTS_$(d) := $(patsubst %.cpp,%.o,$(shell find $(d) -name "*.cpp"))
+D_FILES_$(d) := $(OBJECTS_$(d):%=%.d)
-CLEAN := $(CLEAN) $(OBJS_$(d)) $(DEPS_$(d)) $(TGTS_$(d))
+LIBRARY_$(d) := $(d)/libstlplus.a
+CLEAN := $(CLEAN) $(OBJECTS_$(d)) $(D_FILES_$(d)) $(LIBRARY_$(d))
-$(OBJS_$(d)): CF_TGT := -I$(d) -I$(d)/containers -I$(d)/portability
-$(OBJS_$(d)): $(d)/rules.mk
+$(OBJECTS_$(d)): CF_TGT := -I$(d) -I$(d)/containers -I$(d)/portability
+$(OBJECTS_$(d)): $(d)/rules.mk
-$(TGTS_$(d)): $(OBJS_$(d))
+$(LIBRARY_$(d)): $(OBJECTS_$(d))
$(DO_AR)
-#######################
--include $(DEPS_$(d))
+########################
+-include $(D_FILES_$(d))
d := $(dirstack_$(sp))
sp := $(basename $(sp))
-#######################
+########################