montnaro@sprite.crd.ge.com (Skip Montanaro) (11/30/89)
The following short makefile demonstrates a feature/bug in Make 3.57. The
shell script, mic, does not have a #!/bin/sh first line. When executed by
Make 3.57, it does not receive command line args other than $0. However,
mic2 does. This problem arises with the move-if-change shell script that is
used in building GNU CC. (I use it for other things. The version in the GCC
stuff may have acquired a #!/bin/sh line by now.) SunPro Make does not
exhibit this behavior, as the sample output following the makefile shows.
----------cut here----------
tst : mic mic2
./mic foo bar
./mic2 baz bip
mic : FRC
@echo 'echo Executing $$0' > mic
@echo 'echo Arg 1 == $$1' >> mic
@echo 'echo Arg 2 == $$2' >> mic
@chmod +x mic
mic2 : FRC
@echo '#!/bin/sh' > mic2
@echo 'echo Executing $$0' >> mic2
@echo 'echo Arg 1 == $$1' >> mic2
@echo 'echo Arg 2 == $$2' >> mic2
@chmod +x mic2
FRC :
----------cut here----------
Sample output:
% /bin/make
./mic foo bar
Executing ./mic
Arg 1 == foo
Arg 2 == bar
./mic2 baz bip
Executing ./mic2
Arg 1 == baz
Arg 2 == bip
% gmake -v
GNU Make version 3.57, by Richard Stallman and Roland McGrath.
Copyright (C) 1988, 1989 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
./mic foo bar
Executing ./mic
Arg 1 ==
Arg 2 ==
./mic2 baz bip
Executing ./mic2
Arg 1 == baz
Arg 2 == bip
Skip (montanaro@crdgw1.ge.com)