NetBSD/share/mk/bsd.links.mk
sommerfeld 36dc09c47d make(1) specifies, regarding :: targets:
Sources for a target do not accumulate over dependency lines
	when this operator is used.

An unstated implication of this is that when parallel builds are done,
each separate instance of the target can be scheduled independantly.
As a result, the linksinstall target with commands could be executed
too early during a parallel build since they didn't actually have a
dependancy on "realinstall".

To fix this, correct the linksinstall:: realinstall dependancy by
eliminating the command-less linksinstall target, and moving the
dependancy to the other linksinstall target.
2002-04-30 14:29:01 +00:00

41 lines
880 B
Makefile

# $NetBSD: bsd.links.mk,v 1.19 2002/04/30 14:29:01 sommerfeld Exp $
##### Basic targets
.PHONY: linksinstall
install: linksinstall
##### Default values
LINKS?=
SYMLINKS?=
##### Install rules
linksinstall:: realinstall
.if !empty(SYMLINKS)
@(set ${SYMLINKS}; \
while test $$# -ge 2; do \
l=$$1; shift; \
t=${DESTDIR}$$1; shift; \
if [ -h $$t ]; then \
cur=`ls -ld $$t | awk '{print $$NF}'` ; \
if [ "$$cur" = "$$l" ]; then \
continue ; \
fi; \
fi; \
echo "$$t -> $$l"; \
rm -rf $$t; ${INSTALL_SYMLINK} $$l $$t; \
done; )
.endif
.if !empty(LINKS)
@(set ${LINKS}; \
echo ".include <bsd.own.mk>"; \
while test $$# -ge 2; do \
l=${DESTDIR}$$1; shift; \
t=${DESTDIR}$$1; shift; \
echo "realall: $$t"; \
echo "$$t!"; \
echo " @echo \"$$t -> $$l\""; \
echo " @rm -f $$t; ${INSTALL_LINK} $$l $$t"; \
done; \
) | ${MAKE} -f- all
.endif