aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Norris <computersforpeace@gmail.com>2012-03-09 09:49:09 -0800
committerArtem Bityutskiy <artem.bityutskiy@linux.intel.com>2012-03-12 15:07:27 +0200
commit424050cf57f797d635059b18ba6b8591c3fc126f (patch)
tree4dcfffd4f86b3025237126bdd2399455d9420be7
parentc36e0067ffdae9ca83abae89f2d22dc9013d9734 (diff)
Makefile: fix "make clean" for old GNU find
findutils v4.1.x does not have the `-exec CMD {} +' syntax. We can just as easily use the `-exec CMD {} \;' syntax. However, it will launch a lot more `rm' processes, so we only use it if the first form fails with an error. This isn't a perfect solution (`find -exec +' can fail for other reasons) but it works well enough. This problem manifests itself in RHEL 4, findutils 4.1.20: $ make clean rm -f /XXX/mtd-utils/*.o /XXX/mtd-utils/ftl_format ... find: missing argument to `-exec' make: *** [clean] Error 1 Signed-off-by: Brian Norris <computersforpeace@gmail.com> Acked-by: Mike Frysinger <vapier@gentoo.org> Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
-rw-r--r--Makefile8
1 files changed, 5 insertions, 3 deletions
diff --git a/Makefile b/Makefile
index 17a1216..7506ed4 100644
--- a/Makefile
+++ b/Makefile
@@ -42,6 +42,8 @@ OBJDEPS = $(BUILDDIR)/include/version.h
include common.mk
+CLEAN_FIND = find "$(BUILDDIR)/" -xdev '(' -name '*.[ao]' -o -name '.*.c.dep' ')'
+
clean::
ifneq ($(BUILDDIR)/.git,)
ifneq ($(BUILDDIR),.)
@@ -50,10 +52,10 @@ ifneq ($(BUILDDIR),$(CURDIR))
endif
endif
endif
+ # findutils v4.1.x (RHEL 4) do not have '+' syntax
@if test -d "$(BUILDDIR)/"; then \
- find $(BUILDDIR)/ -xdev \
- '(' -name '*.[ao]' -o -name '.*.c.dep' ')' \
- -exec rm -f {} + ; \
+ $(CLEAN_FIND) -exec rm -f {} + 2> /dev/null || \
+ $(CLEAN_FIND) -exec rm -f {} \; ; \
fi
rm -f $(BUILDDIR)/include/version.h
$(MAKE) -C $(TESTS) clean