[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
syncing build-aux/compile
From: |
Eric Blake |
Subject: |
syncing build-aux/compile |
Date: |
Wed, 18 Mar 2009 17:10:53 +0000 (UTC) |
User-agent: |
Loom/3.14 (http://gmane.org/) |
Any objection to adding automake's compile program to the list of programs
autoupdated into gnulib's build-aux directory? I'd like to pick up the latest
version of this file (modified this year) while still using a stable automake
release (which has a version from 2005), when I cut my release of m4.
Also, since doc/install.texi was recently autoupdated, we should force a rerun
of 'make -C doc INSTALL INSTALL.ISO INSTALL.UTF-8'.
From: Eric Blake <address@hidden>
Date: Wed, 18 Mar 2009 10:33:18 -0600
Subject: [PATCH] build-aux/compile: sync from automake
* build-aux/compile: New file, from automake.
* config/srclist.txt: Mention build-aux/compile.
Signed-off-by: Eric Blake <address@hidden>
---
ChangeLog | 6 ++
build-aux/compile | 142 ++++++++++++++++++++++++++++++++++++++++++++++++++++
config/srclist.txt | 1 +
3 files changed, 149 insertions(+), 0 deletions(-)
create mode 100755 build-aux/compile
diff --git a/ChangeLog b/ChangeLog
index 0af9a84..86757f4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2009-03-18 Eric Blake <address@hidden>
+
+ build-aux/compile: sync from automake
+ * build-aux/compile: New file, from automake.
+ * config/srclist.txt: Mention build-aux/compile.
+
2009-03-17 Bruno Haible <address@hidden>
* lib/git-merge-changelog.c: Fix typo in comment.
diff --git a/build-aux/compile b/build-aux/compile
new file mode 100755
index 0000000..af472ac
--- /dev/null
+++ b/build-aux/compile
@@ -0,0 +1,142 @@
+#! /bin/sh
+# Wrapper for compilers which do not understand `-c -o'.
+
+scriptversion=2009-03-03.21
+
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009 Free Software
+# Foundation, Inc.
+# Written by Tom Tromey <address@hidden>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <address@hidden> or send patches to
+# <address@hidden>.
+
+case $1 in
+ '')
+ echo "$0: No command. Try \`$0 --help' for more information." 1>&2
+ exit 1;
+ ;;
+ -h | --h*)
+ cat <<\EOF
+Usage: compile [--help] [--version] PROGRAM [ARGS]
+
+Wrapper for compilers which do not understand `-c -o'.
+Remove `-o dest.o' from ARGS, run PROGRAM with the remaining
+arguments, and rename the output as expected.
+
+If you are trying to build a whole package this is not the
+right script to run: please start by reading the file `INSTALL'.
+
+Report bugs to <address@hidden>.
+EOF
+ exit $?
+ ;;
+ -v | --v*)
+ echo "compile $scriptversion"
+ exit $?
+ ;;
+esac
+
+ofile=
+cfile=
+eat=
+
+for arg
+do
+ if test -n "$eat"; then
+ eat=
+ else
+ case $1 in
+ -o)
+ # configure might choose to run compile as `compile cc -o foo foo.c'.
+ # So we strip `-o arg' only if arg is an object.
+ eat=1
+ case $2 in
+ *.o | *.obj)
+ ofile=$2
+ ;;
+ *)
+ set x "$@" -o "$2"
+ shift
+ ;;
+ esac
+ ;;
+ *.c)
+ cfile=$1
+ set x "$@" "$1"
+ shift
+ ;;
+ *)
+ set x "$@" "$1"
+ shift
+ ;;
+ esac
+ fi
+ shift
+done
+
+if test -z "$ofile" || test -z "$cfile"; then
+ # If no `-o' option was seen then we might have been invoked from a
+ # pattern rule where we don't need one. That is ok -- this is a
+ # normal compilation that the losing compiler can handle. If no
+ # `.c' file was seen then we are probably linking. That is also
+ # ok.
+ exec "$@"
+fi
+
+# Name of file we expect compiler to create.
+cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
+
+# Create the lock directory.
+# Note: use `[/\\:.-]' here to ensure that we don't use the same name
+# that we are using for the .o file. Also, base the name on the expected
+# object file name, since that is what matters with a parallel build.
+lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
+while true; do
+ if mkdir "$lockdir" >/dev/null 2>&1; then
+ break
+ fi
+ sleep 1
+done
+# FIXME: race condition here if user kills between mkdir and trap.
+trap "rmdir '$lockdir'; exit 1" 1 2 15
+
+# Run the compile.
+"$@"
+ret=$?
+
+if test -f "$cofile"; then
+ mv "$cofile" "$ofile"
+elif test -f "${cofile}bj"; then
+ mv "${cofile}bj" "$ofile"
+fi
+
+rmdir "$lockdir"
+exit $ret
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
diff --git a/config/srclist.txt b/config/srclist.txt
index 9a3b92e..70f20ac 100644
--- a/config/srclist.txt
+++ b/config/srclist.txt
@@ -5,6 +5,7 @@
$GNUCONFIG/config.guess build-aux
$GNUCONFIG/config.sub build-aux
#
+$AUTOMAKE/lib/compile build-aux
$AUTOMAKE/lib/depcomp build-aux
$AUTOMAKE/lib/elisp-comp build-aux
$AUTOMAKE/lib/gnupload build-aux
--
1.6.1.2
- syncing build-aux/compile,
Eric Blake <=