aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/kernel-build.mk7
-rw-r--r--include/kernel-defaults.mk7
-rw-r--r--include/quilt.mk70
-rw-r--r--target/Makefile2
-rw-r--r--target/linux/Makefile3
5 files changed, 66 insertions, 23 deletions
diff --git a/include/kernel-build.mk b/include/kernel-build.mk
index e3c532cd1d7..71b9d8000fc 100644
--- a/include/kernel-build.mk
+++ b/include/kernel-build.mk
@@ -53,6 +53,9 @@ else
)
endif
+STAMP_PREPARED:=$(LINUX_DIR)/.prepared
+STAMP_CONFIGURED:=$(LINUX_DIR)/.configured
+include $(INCLUDE_DIR)/quilt.mk
include $(INCLUDE_DIR)/kernel-defaults.mk
define Kernel/Prepare
@@ -82,13 +85,13 @@ define BuildKernel
$(SCRIPT_DIR)/download.pl $(DL_DIR) $(LINUX_SOURCE) $(LINUX_KERNEL_MD5SUM) $(LINUX_SITE)
endif
- $(LINUX_DIR)/.prepared: $(DL_DIR)/$(LINUX_SOURCE)
+ $(STAMP_PREPARED): $(DL_DIR)/$(LINUX_SOURCE)
-rm -rf $(KERNEL_BUILD_DIR)
-mkdir -p $(KERNEL_BUILD_DIR)
$(call Kernel/Prepare)
touch $$@
- $(LINUX_DIR)/.configured: $(LINUX_DIR)/.prepared $(LINUX_CONFIG)
+ $(STAMP_CONFIGURED): $(LINUX_DIR)/.prepared $(LINUX_CONFIG)
$(call Kernel/Configure)
touch $$@
diff --git a/include/kernel-defaults.mk b/include/kernel-defaults.mk
index b9231a9bebd..529b3308511 100644
--- a/include/kernel-defaults.mk
+++ b/include/kernel-defaults.mk
@@ -27,12 +27,11 @@ KERNEL_MAKEOPTS := -C $(LINUX_DIR) \
ARCH="$(LINUX_KARCH)" \
CONFIG_SHELL="$(BASH)"
+# defined in quilt.mk
+Kernel/Patch:=$(Kernel/Patch/Default)
define Kernel/Prepare/Default
bzcat $(DL_DIR)/$(LINUX_SOURCE) | tar -C $(KERNEL_BUILD_DIR) $(TAR_OPTIONS)
- if [ -d $(GENERIC_PLATFORM_DIR)/files ]; then $(CP) $(GENERIC_PLATFORM_DIR)/files/* $(LINUX_DIR)/; fi
- if [ -d $(GENERIC_PLATFORM_DIR)/patches ]; then $(PATCH) $(LINUX_DIR) $(GENERIC_PLATFORM_DIR)/patches; fi
- if [ -d ./files ]; then $(CP) ./files/* $(LINUX_DIR)/; fi
- if [ -d ./patches ]; then $(PATCH) $(LINUX_DIR) ./patches; fi
+ $(Kernel/Patch)
endef
define Kernel/Configure/2.4
diff --git a/include/quilt.mk b/include/quilt.mk
index beb0840c000..dbf0435f99e 100644
--- a/include/quilt.mk
+++ b/include/quilt.mk
@@ -5,22 +5,30 @@
# See /LICENSE for more information.
#
+ifeq ($(KERNEL_BUILD),1)
+ PKG_BUILD_DIR:=$(LINUX_DIR)
+endif
+
+define Quilt/Patch
+ @for patch in $$$$( (cd $(1) && ls) 2>/dev/null ); do ( \
+ cp "$(1)/$$$$patch" $(PKG_BUILD_DIR); \
+ cd $(PKG_BUILD_DIR); \
+ quilt import -P$(2)$$$$patch -p 1 "$$$$patch"; \
+ quilt push -f >/dev/null 2>/dev/null; \
+ rm -f "$$$$patch"; \
+ ); done
+endef
+
QUILT?=$(strip $(shell test -f $(PKG_BUILD_DIR)/.quilt_used && echo y))
ifneq ($(QUILT),)
STAMP_PREPARED:=$(strip $(STAMP_PREPARED))_q
STAMP_PATCHED:=$(PKG_BUILD_DIR)/.quilt_patched
CONFIG_AUTOREBUILD=
- PATCHES:=$(shell (cd ./patches && ls) 2>/dev/null)
+ PATCHES:=$(shell )
define Build/Patch/Default
rm -rf $(PKG_BUILD_DIR)/patches
mkdir -p $(PKG_BUILD_DIR)/patches
- @for patch in $(PATCHES); do ( \
- cp "./patches/$$$$patch" $(PKG_BUILD_DIR); \
- cd $(PKG_BUILD_DIR); \
- quilt import -p 1 "$$$$patch"; \
- quilt push -f >/dev/null 2>/dev/null; \
- rm -f "$$$$patch"; \
- ); done
+ $(call Quilt/Patch,./patches,)
@echo
touch $(PKG_BUILD_DIR)/.quilt_used
endef
@@ -34,11 +42,46 @@ else
endef
endif
+define Kernel/Patch/Default
+ if [ -d $(GENERIC_PLATFORM_DIR)/files ]; then $(CP) $(GENERIC_PLATFORM_DIR)/files/* $(LINUX_DIR)/; fi
+ if [ -d ./files ]; then $(CP) ./files/* $(LINUX_DIR)/; fi
+ $(if $(strip $(QUILT)),$(call Quilt/Patch,$(GENERIC_PLATFORM_DIR)/patches,generic/), \
+ if [ -d $(GENERIC_PLATFORM_DIR)/patches ]; then $(PATCH) $(LINUX_DIR) $(GENERIC_PLATFORM_DIR)/patches; fi \
+ )
+ $(if $(strip $(QUILT)),$(call Quilt/Patch,./patches,platform/), \
+ if [ -d ./files ]; then $(CP) ./files/* $(LINUX_DIR)/; fi \
+ )
+ touch $(PKG_BUILD_DIR)/.quilt_used
+endef
+
$(STAMP_PATCHED): $(STAMP_PREPARED)
@cd $(PKG_BUILD_DIR); quilt pop -a -f >/dev/null 2>/dev/null || true
- $(if $(strip $(PATCHES)),cd $(PKG_BUILD_DIR); quilt push -a)
+ [ -f "$(PKG_BUILD_DIR)/patches/series" ] && cd $(PKG_BUILD_DIR); quilt push -a
touch $@
+define Quilt/RefreshDir
+ mkdir -p $(1)
+ -rm -f $(1)/* 2>/dev/null >/dev/null
+ @( \
+ for patch in $$($(if $(2),grep "^$(2)",cat) $(PKG_BUILD_DIR)/patches/series | awk '{print $$1}'); do \
+ $(CP) -v "$(PKG_BUILD_DIR)/patches/$$patch" $(1); \
+ done; \
+ )
+endef
+
+define Quilt/Refresh/Package
+ $(call Quilt/RefreshDir,./patches)
+endef
+
+define Quilt/Refresh/Kernel
+ @[ -z "$$(grep -v '^generic/' $(PKG_BUILD_DIR)/patches/series | grep -v '^platform/')" ] || { \
+ echo "All kernel patches must start with either generic/ or platform/"; \
+ false; \
+ }
+ $(call Quilt/RefreshDir,$(GENERIC_PLATFORM_DIR)/patches,generic/)
+ $(call Quilt/RefreshDir,./patches,platform/)
+endef
+
refresh: $(STAMP_PREPARED)
@[ -f "$(PKG_BUILD_DIR)/.quilt_used" ] || { \
echo "The source directory was not unpacked using quilt. Please rebuild with QUILT=1"; \
@@ -52,10 +95,5 @@ refresh: $(STAMP_PREPARED)
echo "The patches are not sorted in the right order. Please fix."; \
false; \
}
- mkdir -p ./patches
- rm -f ./patches/* 2>/dev/null >/dev/null
- @( \
- for patch in $$(cat $(PKG_BUILD_DIR)/patches/series); do \
- $(CP) -v "$(PKG_BUILD_DIR)/patches/$$patch" ./patches; \
- done; \
- )
+ $(if $(KERNEL_BUILD),$(Quilt/Refresh/Kernel),$(Quilt/Refresh/Package))
+
diff --git a/target/Makefile b/target/Makefile
index 9a7dff2a78d..438d268b5e9 100644
--- a/target/Makefile
+++ b/target/Makefile
@@ -51,5 +51,5 @@ image_install: image_compile
imagebuilder_install: image_install
$(MAKE) -C imagebuilder install
-%-prereq %-prepare %-download %-clean %-compile %-install: FORCE
+%-prereq %-prepare %-download %-clean %-compile %-install %-refresh: FORCE
$(MAKE) -C $* $(patsubst $*-%,%,$@)
diff --git a/target/linux/Makefile b/target/linux/Makefile
index c15d81999f7..275085448f5 100644
--- a/target/linux/Makefile
+++ b/target/linux/Makefile
@@ -19,6 +19,9 @@ compile:
install:
$(MAKE) -C $(BOARD)-$(KERNEL) install
+refresh:
+ $(MAKE) -C $(BOARD)-$(KERNEL) refresh
+
menuconfig:
$(MAKE) -C $(BOARD)-$(KERNEL) menuconfig
href='#n419'>419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490