Annotation of OpenXM_contrib/gmp/mpn/cpp-ccas, Revision 1.1
1.1 ! ohara 1: #!/bin/sh
! 2: #
! 3: # A helper script for Makeasm.am .S.lo rule.
! 4:
! 5: # Copyright 2001 Free Software Foundation, Inc.
! 6: #
! 7: # This file is part of the GNU MP Library.
! 8: #
! 9: # The GNU MP Library is free software; you can redistribute it and/or modify
! 10: # it under the terms of the GNU Lesser General Public License as published by
! 11: # the Free Software Foundation; either version 2.1 of the License, or (at your
! 12: # option) any later version.
! 13: #
! 14: # The GNU MP Library is distributed in the hope that it will be useful, but
! 15: # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
! 16: # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
! 17: # License for more details.
! 18: #
! 19: # You should have received a copy of the GNU Lesser General Public License
! 20: # along with the GNU MP Library; see the file COPYING.LIB. If not, write to
! 21: # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
! 22: # MA 02111-1307, USA.
! 23:
! 24:
! 25: # Usage: cpp-cc --cpp=CPP CC ... file.S ...
! 26: #
! 27: # Process file.S with the given CPP command plus any -D options in the
! 28: # rest of the arguments, then assemble with the given CC plus all
! 29: # arguments.
! 30: #
! 31: # The CPP command must be in a single --cpp= argument, and will be
! 32: # split on whitespace. It should include -I options required.
! 33: #
! 34: # When CC is invoked, file.S is replaced with a temporary .s file
! 35: # which is the CPP output.
! 36: #
! 37: # Any lines starting with "#" are removed from the CPP output, usually
! 38: # these will be #line and #file markers from CPP, but they might also
! 39: # be comments from the .S.
! 40: #
! 41: # To allow parallel builds, the temp file name is based on the .S file
! 42: # name, which will be the output object filename for all uses we put
! 43: # this script to.
! 44:
! 45: CPP=
! 46: CPPDEFS=
! 47: CC=
! 48: S=
! 49: SEEN_O=no
! 50:
! 51: for i in "$@"; do
! 52: case $i in
! 53: --cpp=*)
! 54: CPP=`echo "$i" | sed 's/^--cpp=//'`
! 55: ;;
! 56: -D*)
! 57: CPPDEFS="$CPPDEFS $i"
! 58: CC="$CC $i"
! 59: ;;
! 60: *.S)
! 61: if test -n "$S"; then
! 62: echo "Only one .S file permitted"
! 63: exit 1
! 64: fi
! 65: BASENAME=`echo "$i" | sed -e 's/\.S$//' -e 's/^.*[\\/:]//'`
! 66: S=$i
! 67: TMP_I=tmp-$BASENAME.i
! 68: TMP_S=tmp-$BASENAME.s
! 69: CC="$CC $TMP_S"
! 70: ;;
! 71: -o)
! 72: SEEN_O=yes
! 73: CC="$CC $i"
! 74: ;;
! 75: *)
! 76: CC="$CC $i"
! 77: ;;
! 78: esac
! 79: done
! 80:
! 81: if test -z "$CPP"; then
! 82: echo "No --cpp specified"
! 83: exit 1
! 84: fi
! 85:
! 86: if test -z "$S"; then
! 87: echo "No .S specified"
! 88: exit 1
! 89: fi
! 90:
! 91: # Libtool adds it's own -o when sending output to .libs/foo.o, but not
! 92: # when just wanting foo.o in the current directory. We need an
! 93: # explicit -o in both cases since we're assembling tmp-foo.s.
! 94: #
! 95: if test $SEEN_O = no; then
! 96: CC="$CC -o $BASENAME.o"
! 97: fi
! 98:
! 99: echo "$CPP $CPPDEFS $S >$TMP_I"
! 100: $CPP $CPPDEFS $S >$TMP_I || exit
! 101:
! 102: echo "grep -v '^#' $TMP_I >$TMP_S"
! 103: grep -v '^#' $TMP_I >$TMP_S
! 104:
! 105: echo "$CC"
! 106: $CC || exit
! 107:
! 108: # Comment this out to preserve .s intermediates
! 109: rm -f $TMP
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>