[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

20030418: make and gmake on freebsd



Neil,

>Date: Fri, 18 Apr 2003 16:46:12 -0500
>From: Texas A+M LDM <address@hidden>
>Organization: Texas A&M University
>To: address@hidden
>Subject: make and gmake on freebsd

The above message contained the following:

> Seems I recall your earlier builds of ldm 6.x.x on FreeBSD required using 
> gmake instead of make, while the 6.0.10 works with make on FreeBSD.
> In that some of us trying to port weather to FreeBSD are seeing make fail on 
> Peter Nielly's Makefile:
> "Makefile", line 317: Missing dependency operator
> "Makefile", line 321: Missing dependency operator
> "Makefile", line 325: Missing dependency operator
> make: fatal errors encountered -- cannot continue
> 
> while gmake doesn't have that problem with the Makfile, I was wondering what 
> it was with 'make'ing on freebsd that you found and then solved?

The FreeBSD make(1) utility had problems with the implicit ".c.a" rule:
it didn't compile the C files and put the object modules in the library.
The solution was to avoid using that rule and, instead, explicitly
require compilation of the C files into object modules and then the
adding of those object modules to the library. This meant rewriting the
makefiles to avoid the use of the "library(module.o)" syntax.  For
example:

    LIB_OBJS = $(LIBRARY)(module1.o) $(LIBRARY)(module2.o) ...

    all: $(LIB_OBJS)

became, instead

    LIB_OBJS = module1.o module2.o ...

    all: $(LIB_OBJS)
            $(AR) -ru $(LIBRARY) $(LIB_OBJS)

Good luck.

> Thanks, -Neil

Regards,
Steve Emmerson