diff options
author | Tom Tromey <tromey@redhat.com> | 1999-04-11 13:02:43 +0000 |
---|---|---|
committer | Tom Tromey <tromey@redhat.com> | 1999-04-11 13:02:43 +0000 |
commit | 88b595974744cad79fa4bc2492a796c6037eea49 (patch) | |
tree | 8e9ad1c5fa002f0293b9bea17139bb1be3bf5db3 /lib/compile | |
parent | 62fef9141ba3762d716da47b068733750d6a1fbc (diff) | |
download | automake-88b595974744cad79fa4bc2492a796c6037eea49.tar.gz |
First cut at allowing objects in subdirectories:
* m4/Makefile.am (m4data_DATA): Added minuso.m4.
* Makefile.am (dist_script_DATA): Added compile.
* m4/minuso.m4: New file.
* automake.in (initialize_global_constants): Added compile to
common_files.
(seen_cc_c_o): New global.
(scan_one_configure_file): Set it when AM_PROG_CC_C_O seen.
(handle_options): Recognize `subdir-objects' option.
(lang_c_rewrite): Added directory argument.
(lang_yacc_rewrite): Likewise.
(lang_yaccxx_rewrite): Likewise.
(lang_lex_rewrite): Likewise.
(lang_lexxx_rewrite): Likewise.
(handle_single_transform_list): Pass directory to _rewrite
function. Generate dependencies for dirstamp files for each .o;
it is just the rules we want to create once.
(lang_c_rewrite): Handle `subdir-objects' option.
(lang_c_rewrite): Require `compile' program.
* compile: New file.
Diffstat (limited to 'lib/compile')
-rwxr-xr-x | lib/compile | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/lib/compile b/lib/compile new file mode 100755 index 000000000..7da75ce41 --- /dev/null +++ b/lib/compile @@ -0,0 +1,82 @@ +#! /bin/sh + +# Wrapper for compilers which do not understand `-c -o'. + +# Copyright (C) 1999 Free Software Foundation, Inc. +# Written by Tom Tromey <tromey@cygnus.com>. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# Usage: +# compile PROGRAM [ARGS]... +# `-o FOO.o' is removed from the args passed to the actual compile. + +prog="$1" +shift + +ofile= +cfile= +args= +while test $# -gt 0; do + case "$1" in + -o) + ofile="$2" + shift + ;; + *.c) + cfile="$1" + args="$args $1" + ;; + *) + args="$args $1" + ;; + esac + shift +done + +test -z "$ofile" && { + echo "compile: no \`-o' option seen" 1>&2 + exit 1 +} + +test -z "$cfile" && { + echo "compile: no \`.c' file seen" 1>&2 + exit 1 +} + +# Name of file we expect compiler to create. +cofile="`echo $cfile | sed -e 's|^.*/||' -e 's/\.c$/.o/'`" + +# Create the lock directory. +lockdir="`echo $ofile | sed -e 's|/|_|g'`" +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. +"$prog" $args +status=$? + +if test -f "$cofile"; then + mv "$cofile" "$ofile" +fi + +rmdir $lockdir +exit $status |