Date: Fri, 15 May 1998 10:12:01 -0700 (PDT) From: Bruce Evans <bde@FreeBSD.ORG> To: cvs-committers@FreeBSD.ORG, cvs-all@FreeBSD.ORG, cvs-user@FreeBSD.ORG Subject: cvs commit: src Makefile Message-ID: <199805151712.KAA11461@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
bde 1998/05/15 10:12:01 PDT Modified files: . Makefile Log: Don't use `&&' in any shell commands here. Using it to give conditional execution is usually unnecessary in BSD Makefiles because BSD make invokes shells with -e. Using it to give conditional execution is often wrong in BSD makefiles because BSD make joins shell commands when invoked in certain ways (in particular, as `make -jN'). Example makefile: --- clean: cd / false && true rm -rf * # a dangerous command --- This should terminate after the `false && true' command fails, but it doesn't when the commands are joined (`false && true' is a non- simple command, so -e doesn't cause termination). The b-maked version: --- clean: cd / false; true rm -rf * # a dangerous command --- terminates after the `false' command fails (`false' is a simple command, so -e causes termination). However, for versions of make like gnu make that don't invoke shells with -e, this change completely breaks the makefile. This is one of the fixes for the bug suite that caused `make world' to sometimes put raw cpp output in .depend files. Building of cc sometimes failed, but the failure did not terminate the build immediately, and various wrong versions of the cc components were used until one was wrong enough to cause a fatal error. Revision Changes Path 1.177 +116 -116 src/Makefile
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199805151712.KAA11461>