Markku.Savela@tel.vtt.fi (Markku Savela) (11/15/90)
--text follows this line-- I compiled standard GNU Make version 3.58 for Apollo with libary support. There is some problem though, it looks like it cannot find whether file.o is already in library or not? I get the following debug info, even if the file chcoddec.o is in the library (at least "ar t libODA.a" says so). ... No implicit rule found for `libODA.a'. Considering target file `libODA.a(chcoddec.o)'. File `libODA.a(chcoddec.o)' does not exist. Looking for an implicit rule for `libODA.a(chcoddec.o)'. ... Is this some specific Apollo library thing or general GNU make problem? Whatever it is, is there a fix for this? -- Markku Savela (savela@tel.vtt.fi), Technical Research Centre of Finland Telecommunications Laboratory, Otakaari 7 B, SF-02150 ESPOO, Finland
hj412fr@duc220.uni-duisburg.de (Martin Anantharaman) (11/19/90)
I enclose a message I saved some time ago (my apologies to the original
sender for having deleted all addresses!):
Hello!
I've had gnu make-3.58 running on my Apollo for a day now, and it's
really nice. However, GNU make and Apollo archive files have two
incompatibilities.
The first problem is that Apollos put a '/' character in the names
of archived files even if you're in the Apollo BSD4.3 environment
(as I am). This can be fixed by adding something to check for an
Apollo on line 160 of arscan.c.
The other problem may be a general problem for all machines with
'USG' defined (does this mean sys5? I'm not sure). The routine
'ar_name_equal' in arscan.c assumes the length of the archived
filename to be 15 characters plus a null; this is not true with USG
true. As the filename is terminated with a '/' and a space (at least
on the Apollo), only 14 characters are stored. On the Apollo these
14 characters are just the start of the filename (the full filename
is stored elsewhere), so an object file need not end with '.o' as
GNU assumes.
The changed version of ar_name_equal in arscan.c thus becomes:
/* Return nonzero iff NAME matches MEM. If NAME is longer than
sizeof (struct ar_hdr.ar_name), MEM may be the truncated version. */
int
ar_name_equal (name, mem)
char *name, *mem;
{
return (!strncmp (name, mem, 14));
}
Goodbye!
Hope that helps!
Martin Anantharaman
FB7, FG7 (Mechanik) Work: +49 (203) 379-3336
Universitaet -GH- Duisburg Home: +49 (203) 37 65 89
Lotharstr. 1 FAX: +49 (203) 379-3052
4100 Duisburg 1 E-Mail: hj412fr@duc220.uni-duisburg.de
West Germany