m4-ccas revision 1.1.1.2 1 #!/bin/sh
2 #
3 # A helper script for Makeasm.am .asm.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 either:
11 #
12 # * the GNU Lesser General Public License as published by the Free
13 # Software Foundation; either version 3 of the License, or (at your
14 # option) any later version.
15 #
16 # or
17 #
18 # * the GNU General Public License as published by the Free Software
19 # Foundation; either version 2 of the License, or (at your option) any
20 # later version.
21 #
22 # or both in parallel, as here.
23 #
24 # The GNU MP Library is distributed in the hope that it will be useful, but
25 # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
26 # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
27 # for more details.
28 #
29 # You should have received copies of the GNU General Public License and the
30 # GNU Lesser General Public License along with the GNU MP Library. If not,
31 # see https://www.gnu.org/licenses/.
32
33
34 # Usage: m4-ccas --m4=M4 CC ... file.asm ...
35 #
36 # Process file.asm with the given M4 plus any -D arguments, then
37 # assemble with the given CC plus all arguments.
38 #
39 # The M4 command must be in a single --m4= argument, and will be split
40 # on whitespace. When CC is invoked file.asm is replaced with a
41 # temporary .s file which is the M4 output.
42 #
43 # To allow parallel builds, the temp file name is based on the .asm
44 # file name, which will be the output object filename for all uses we
45 # put this script to.
46
47 M4=
48 CC=
49 DEFS=
50 ASM=
51 SEEN_O=no
52
53 for i in "$@"; do
54 case $i in
55 --m4=*)
56 M4=`echo "$i" | sed 's/^--m4=//'`
57 ;;
58 -D*)
59 DEFS="$DEFS $i"
60 CC="$CC $i"
61 ;;
62 *.asm)
63 if test -n "$ASM"; then
64 echo "Only one .asm file permitted"
65 exit 1
66 fi
67 BASENAME=`echo "$i" | sed -e 's/\.asm$//' -e 's/^.*[\\/:]//'`
68 TMP=tmp-$BASENAME.s
69 ASM=$i
70 CC="$CC $TMP"
71 ;;
72 -o)
73 SEEN_O=yes
74 CC="$CC $i"
75 ;;
76 *)
77 CC="$CC $i"
78 ;;
79 esac
80 done
81
82 if test -z "$M4"; then
83 echo "No --m4 specified"
84 exit 1
85 fi
86
87 if test -z "$ASM"; then
88 echo "No .asm specified"
89 exit 1
90 fi
91
92 # Libtool adds it's own -o when sending output to .libs/foo.o, but not
93 # when just wanting foo.o in the current directory. We need an
94 # explicit -o in both cases since we're assembling tmp-foo.s.
95 #
96 if test $SEEN_O = no; then
97 CC="$CC -o $BASENAME.o"
98 fi
99
100 echo "$M4 $DEFS $ASM >$TMP"
101 $M4 $DEFS $ASM >$TMP || exit
102
103 echo "$CC"
104 $CC || exit
105
106 # Comment this out to preserve .s intermediates
107 rm -f $TMP
108