aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2016-01-06 18:38:49 +0000
committerFelix Fietkau <nbd@openwrt.org>2016-01-06 18:38:49 +0000
commiteb5b5acffb4870d0cb25536e1a44bd9143732992 (patch)
tree51c8c44ac45c380429461ae9bf0b6c2044b0e18d
parent39d7ab10b45f0b8d1f6e20f6e38991455517b63e (diff)
downloadmaster-187ad058-eb5b5acffb4870d0cb25536e1a44bd9143732992.tar.gz
master-187ad058-eb5b5acffb4870d0cb25536e1a44bd9143732992.tar.bz2
master-187ad058-eb5b5acffb4870d0cb25536e1a44bd9143732992.zip
build: skip rebuild of kernel images if the source did not change
Signed-off-by: Felix Fietkau <nbd@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@48145 3c298f89-4303-0410-b956-a3cf2f4a3e73
-rw-r--r--include/image.mk14
-rw-r--r--include/kernel-defaults.mk16
2 files changed, 15 insertions, 15 deletions
diff --git a/include/image.mk b/include/image.mk
index 053bb08ed2..4eee4adfaf 100644
--- a/include/image.mk
+++ b/include/image.mk
@@ -357,7 +357,7 @@ endef
define Build/kernel-bin
rm -f $@
- cp $^ $@
+ cp $< $@
endef
define Build/patch-cmdline
@@ -444,6 +444,7 @@ define Device/Init
KERNEL_INITRAMFS_NAME = $$(KERNEL_NAME)-initramfs
KERNEL_INSTALL :=
KERNEL_NAME := vmlinux
+ KERNEL_DEPENDS :=
KERNEL_SIZE :=
FILESYSTEMS := $(TARGET_FILESYSTEMS)
@@ -468,11 +469,11 @@ define Device/Build/initramfs
$(call Device/Export,$(KDIR)/tmp/$$(KERNEL_INITRAMFS_IMAGE),$(1))
$$(_TARGET): $(BIN_DIR)/$$(KERNEL_INITRAMFS_IMAGE)
- $(KDIR)/$$(KERNEL_INITRAMFS_NAME): image_prepare
+ $(KDIR)/$$(KERNEL_INITRAMFS_NAME):: image_prepare
$(BIN_DIR)/$$(KERNEL_INITRAMFS_IMAGE): $(KDIR)/tmp/$$(KERNEL_INITRAMFS_IMAGE)
cp $$^ $$@
- $(KDIR)/tmp/$$(KERNEL_INITRAMFS_IMAGE): $(KDIR)/$$(KERNEL_INITRAMFS_NAME)
+ $(KDIR)/tmp/$$(KERNEL_INITRAMFS_IMAGE): $(KDIR)/$$(KERNEL_INITRAMFS_NAME) $(CURDIR)/Makefile $$(KERNEL_DEPENDS)
@rm -f $$@
$$(call concat_cmd,$$(KERNEL_INITRAMFS))
endef
@@ -495,7 +496,7 @@ endef
define Device/Build/kernel
_KERNEL_IMAGES += $(KDIR)/$$(KERNEL_NAME)
- $(KDIR)/$$(KERNEL_NAME): image_prepare
+ $(KDIR)/$$(KERNEL_NAME):: image_prepare
$$(_TARGET): $$(if $$(KERNEL_INSTALL),$(BIN_DIR)/$$(KERNEL_IMAGE))
$(call Device/Export,$(KDIR)/$$(KERNEL_IMAGE),$(1))
$(BIN_DIR)/$$(KERNEL_IMAGE): $(KDIR)/$$(KERNEL_IMAGE)
@@ -504,7 +505,7 @@ define Device/Build/kernel
ifdef CONFIG_IB
install: $(KDIR)/$$(KERNEL_IMAGE)
endif
- $(KDIR)/$$(KERNEL_IMAGE): $(KDIR)/$$(KERNEL_NAME)
+ $(KDIR)/$$(KERNEL_IMAGE): $(KDIR)/$$(KERNEL_NAME) $(CURDIR)/Makefile $$(KERNEL_DEPENDS)
@rm -f $$@
$$(call concat_cmd,$$(KERNEL))
$$(if $$(KERNEL_SIZE),$$(call Device/Build/check_size,$$(KERNEL_SIZE)))
@@ -581,9 +582,6 @@ define BuildImage
$(foreach device,$(TARGET_DEVICES),$(call Device,$(device)))
$(foreach fs,$(TARGET_FILESYSTEMS) $(fs-subtypes-y),$(call BuildImage/mkfs,$(fs)))
- $$(sort $$(_KERNEL_IMAGES)):
- @touch $$@
-
install: kernel_prepare
$(foreach fs,$(TARGET_FILESYSTEMS),
$(call Image/Build,$(fs))
diff --git a/include/kernel-defaults.mk b/include/kernel-defaults.mk
index f3b5e421d1..052b2b3a7b 100644
--- a/include/kernel-defaults.mk
+++ b/include/kernel-defaults.mk
@@ -138,13 +138,15 @@ IMAGES_DIR:=../../x86/boot
endif
define Kernel/CopyImage
- $(KERNEL_CROSS)objcopy -O binary $(OBJCOPY_STRIP) -S $(LINUX_DIR)/vmlinux $(LINUX_KERNEL)$(1)
- $(KERNEL_CROSS)objcopy $(OBJCOPY_STRIP) -S $(LINUX_DIR)/vmlinux $(KERNEL_BUILD_DIR)/vmlinux$(1).elf
- $(CP) $(LINUX_DIR)/vmlinux $(KERNEL_BUILD_DIR)/vmlinux.debug
- $(foreach k, \
- $(if $(KERNEL_IMAGES),$(KERNEL_IMAGES),$(filter-out dtbs,$(KERNELNAME))), \
- $(CP) $(LINUX_DIR)/arch/$(LINUX_KARCH)/boot/$(IMAGES_DIR)/$(k) $(KERNEL_BUILD_DIR)/$(k)$(1); \
- )
+ cmp -s $(LINUX_DIR)/vmlinux $(KERNEL_BUILD_DIR)/vmlinux$(1).debug || { \
+ $(KERNEL_CROSS)objcopy -O binary $(OBJCOPY_STRIP) -S $(LINUX_DIR)/vmlinux $(LINUX_KERNEL)$(1); \
+ $(KERNEL_CROSS)objcopy $(OBJCOPY_STRIP) -S $(LINUX_DIR)/vmlinux $(KERNEL_BUILD_DIR)/vmlinux$(1).elf; \
+ $(CP) $(LINUX_DIR)/vmlinux $(KERNEL_BUILD_DIR)/vmlinux$(1).debug; \
+ $(foreach k, \
+ $(if $(KERNEL_IMAGES),$(KERNEL_IMAGES),$(filter-out dtbs,$(KERNELNAME))), \
+ $(CP) $(LINUX_DIR)/arch/$(LINUX_KARCH)/boot/$(IMAGES_DIR)/$(k) $(KERNEL_BUILD_DIR)/$(k)$(1); \
+ ) \
+ }
endef
define Kernel/CompileImage/Default