From: Charles McGarvey Date: Mon, 7 Jun 2010 16:40:52 +0000 (-0600) Subject: need the configure script X-Git-Url: https://git.dogcows.com/gitweb?a=commitdiff_plain;h=7ac3aee9efa7f9ce1a966df030b1f76f2b82ef2d;p=chaz%2Fyoink need the configure script --- diff --git a/Makefile b/Makefile index 0ca002b..ead9c51 100644 --- a/Makefile +++ b/Makefile @@ -10,36 +10,42 @@ # 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:@%=%) # @@ -63,25 +69,50 @@ include $(dir)/rules.mk 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) @@ -101,44 +132,58 @@ DO_RC += $(WINDRES) $(DDEFINES) $(DF_TGT) -o $@ -i $< $(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 # diff --git a/Makefile.am b/Makefile.am deleted file mode 100644 index cc0d532..0000000 --- a/Makefile.am +++ /dev/null @@ -1,42 +0,0 @@ - -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 - diff --git a/autogen.sh b/autogen.sh deleted file mode 100755 index 5bce9ba..0000000 --- a/autogen.sh +++ /dev/null @@ -1,1578 +0,0 @@ -#!/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 -# -# Patches: -# Sebastian Pipping -# -###################################################################### - -# 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 <"$tmpfile" +sed -f "$tmpfile" <"$1" >"$2" +rm -f "$tmpfile" + diff --git a/configure b/configure new file mode 100755 index 0000000..06a303d --- /dev/null +++ b/configure @@ -0,0 +1,448 @@ +#!/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 +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 +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 <config.mk < +Charles McGarvey <@BUGREPORT@> .SH AUTHOR .PP Neil Carter was the original creator of Yoink, his winning entry in the diff --git a/link.sh b/link.sh deleted file mode 100755 index d3a739c..0000000 --- a/link.sh +++ /dev/null @@ -1,160 +0,0 @@ -#!/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 - diff --git a/src/Makefile.am b/src/Makefile.am deleted file mode 100644 index 7a680c8..0000000 --- a/src/Makefile.am +++ /dev/null @@ -1,393 +0,0 @@ - -# -# 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 - diff --git a/src/moof/rules.mk b/src/moof/rules.mk index aa2c749..63fed37 100644 --- a/src/moof/rules.mk +++ b/src/moof/rules.mk @@ -9,46 +9,24 @@ d := $(dir) # 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)) -####################### +######################## diff --git a/src/moof/sphere.cc b/src/moof/sphere.cc deleted file mode 100644 index 843f918..0000000 --- a/src/moof/sphere.cc +++ /dev/null @@ -1,48 +0,0 @@ - -/*] 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 - diff --git a/src/rules.mk b/src/rules.mk index e452ae4..ee2f52c 100644 --- a/src/rules.mk +++ b/src/rules.mk @@ -20,35 +20,23 @@ include $(dir)/rules.mk # 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) @@ -59,17 +47,17 @@ $(TGTS_$(d)): $(OBJS_$(d)) $(d)/moof/libmoof.a $(d)/stlplus/libstlplus.a 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)) -####################### +######################## diff --git a/src/stlplus/rules.mk b/src/stlplus/rules.mk index 74f1c37..380609d 100644 --- a/src/stlplus/rules.mk +++ b/src/stlplus/rules.mk @@ -5,75 +5,27 @@ dirstack_$(sp) := $(d) 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)) -####################### +########################