🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

1 total messages Started by Rik Faith Tue, 26 Jan 1993 01:49
make 3.63
#1323
Author: Rik Faith
Date: Tue, 26 Jan 1993 01:49
50 lines
1838 bytes
I'm working with a set of nested makefiles which depend on variables being
passed in the environment.  So, I put a

.EXPORT_ALL_VARIABLES:

in the top level Makefile, and all seemed to be well.  However, in a
Makefile 3 levels down, a builtin rule is used to convert a .c file into a
.o file, with the following error being generated:

  gcc -DKERNEL -Wall -O6 -fomit-frame-pointer -m486
  "-DMAX_SCSI_HOSTS=(1+0)" -c hosts.c -o

  gcc: argument to `-o' is missing
  make[3]: *** [hosts.o] Error 1


The following builtin rule is being used for this:

%.o: %.c
#  commands to execute (built-in):
        $(COMPILE.c) $< $(OUTPUT_OPTION)

*but*

OUTPUT_OPTION = -o

*instead of*

OUTPUT_OPTION = -o $@



The NEWS file for make 3.63 says:

* The value of a recursively expanded variable is now expanded when putting
  it into the environment for child processes.  This change was made for
  compatibility with Unix make.

which appears to be the reason for the anomaly described above.

Is there any way to make version 3.63 work EXACTLY like version 3.62?  I'd
prefer not to "unexport OUTPUT_OPTION" because the makefile should still be
allowed to work with make 3.62.

This set of changes seem too drastic to make for a minor revision, IMHO,
since they seem to break expected builtin rule behavior in unexpected ways.

-- 
Rik Faith: faith@cs.unc.edu
What I tell you three times is true.  --Dodgson
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads