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)