summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--meta/classes/kernel.bbclass18
1 files changed, 15 insertions, 3 deletions
diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
index 51626b03f8..db5d479000 100644
--- a/meta/classes/kernel.bbclass
+++ b/meta/classes/kernel.bbclass
@@ -260,9 +260,21 @@ kernel_do_install() {
# we clean the scripts dir while leaving the generated config
# and include files.
#
- oe_runmake -C $kerneldir CC="${KERNEL_CC}" LD="${KERNEL_LD}" clean
- make -C $kerneldir _mrproper_scripts
- find $kerneldir -path $kerneldir/lib -prune -o -path $kerneldir/tools -prune -o -path $kerneldir/scripts -prune -o -name "*.[csS]" -exec rm '{}' \;
+ oe_runmake -C $kerneldir CC="${KERNEL_CC}" LD="${KERNEL_LD}" clean _mrproper_scripts
+
+ # hide directories that shouldn't have their .c, s and S files deleted
+ for d in tools scripts lib; do
+ mv $kerneldir/$d $kerneldir/.$d
+ done
+
+ # delete .c, .s and .S files, unless we hid a directory as .<dir>. This technique is
+ # much faster than find -prune and -exec
+ find $kerneldir -not -path '*/\.*' -type f -name "*.[csS]" -delete
+
+ # put the hidden dirs back
+ for d in tools scripts lib; do
+ mv $kerneldir/.$d $kerneldir/$d
+ done
# As of Linux kernel version 3.0.1, the clean target removes
# arch/powerpc/lib/crtsavres.o which is present in