-$(LINUX_DIR)/vmlinux: $(STAMP_DIR)/.linux-compile pkg-install ramdisk-config
- $(MAKE) -C $(LINUX_DIR) CROSS_COMPILE="$(KERNEL_CROSS)" ARCH=$(LINUX_KARCH) PATH=$(TARGET_PATH)
-
-$(LINUX_KERNEL): $(LINUX_DIR)/vmlinux
- $(TARGET_CROSS)objcopy -O binary -R .reginfo -R .note -R .comment -R .mdebug -S $< $@
- touch -c $(LINUX_KERNEL)
-
-$(LINUX_DIR)/.modules_done:
- rm -rf $(KERNEL_BUILD_DIR)/modules
- $(MAKE) -C "$(LINUX_DIR)" CROSS_COMPILE="$(KERNEL_CROSS)" ARCH=$(LINUX_KARCH) PATH="$(TARGET_PATH)" modules
- $(MAKE) -C "$(LINUX_DIR)" CROSS_COMPILE="$(KERNEL_CROSS)" DEPMOD=true INSTALL_MOD_PATH=$(KERNEL_BUILD_DIR)/modules modules_install
- touch $(LINUX_DIR)/.modules_done
-
-$(STAMP_DIR)/.linux-compile:
- @$(MAKE) $(LINUX_DIR)/.modules_done $(TARGETS) $(KERNEL_IPKG)
- ln -sf $(KERNEL_BUILD_DIR)/linux-$(LINUX_VERSION) $(BUILD_DIR)/linux
- touch $@
-
-$(KERNEL_IPKG):
- rm -rf $(KERNEL_IDIR)
- mkdir -p $(KERNEL_IDIR)/etc
- $(SCRIPT_DIR)/make-ipkg-dir.sh $(KERNEL_IDIR) ../control/kernel.control $(LINUX_VERSION)-$(BOARD)-$(LINUX_RELEASE) $(ARCH)
- if [ -f ./config/$(BOARD).modules ]; then \
- cp ./config/$(BOARD).modules $(KERNEL_IDIR)/etc/modules; \
- fi
- $(IPKG_BUILD) $(KERNEL_IDIR) $(KERNEL_BUILD_DIR)
-
-$(TOPDIR)/.kernel.mk:
- echo "BOARD:=$(BOARD)" > $@
- echo "LINUX_VERSION:=$(LINUX_VERSION)" >> $@
- echo "LINUX_RELEASE:=$(LINUX_RELEASE)" >> $@
-
-pkg-install: FORCE
- @{ [ "$(INSTALL_TARGETS)" != "" ] && $(IPKG) install $(INSTALL_TARGETS) || true; }
-
-source: $(DL_DIR)/$(LINUX_SOURCE)
-prepare:
- @mkdir -p $(STAMP_DIR) $(PACKAGE_DIR)
- @$(MAKE) $(LINUX_DIR)/.configured
-
-compile: prepare $(STAMP_DIR)/.linux-compile
-
-install: compile $(LINUX_KERNEL)
-
-mostlyclean: FORCE
- rm -f $(STAMP_DIR)/.linux-compile
- rm -f $(KERNEL_BUILD_DIR)/linux-$(LINUX_VERSION)/.modules_done
- rm -f $(KERNEL_BUILD_DIR)/linux-$(LINUX_VERSION)/.drivers-unpacked
- $(MAKE) -C $(KERNEL_BUILD_DIR)/linux-$(LINUX_VERSION) clean
- rm -f $(LINUX_KERNEL)
-
-rebuild: FORCE
- -$(MAKE) mostlyclean
- if [ -f $(LINUX_KERNEL) ]; then \
- $(MAKE) clean; \
- fi
- $(MAKE) compile $(MAKE_TRACE)
-
-clean: FORCE
- rm -f $(STAMP_DIR)/.linux-compile
+ $(STAMP_PREPARED): $(DL_DIR)/$(LINUX_SOURCE)
+ -rm -rf $(KERNEL_BUILD_DIR)
+ -mkdir -p $(KERNEL_BUILD_DIR)
+ $(Kernel/Prepare)
+ touch $$@
+
+ $(STAMP_CONFIGURED): $(STAMP_PREPARED) $(LINUX_CONFIG) $(GENERIC_LINUX_CONFIG) $(TOPDIR)/.config
+ $(Kernel/Configure)
+ touch $$@
+
+ $(LINUX_DIR)/.modules: $(STAMP_CONFIGURED) $(LINUX_DIR)/.config FORCE
+ $(Kernel/CompileModules)
+ touch $$@
+
+ $(LINUX_DIR)/.image: $(STAMP_CONFIGURED) FORCE
+ $(Kernel/CompileImage)
+ touch $$@
+
+ mostlyclean: FORCE
+ $(Kernel/Clean)
+
+ define BuildKernel
+ endef
+
+ download: $(DL_DIR)/$(LINUX_SOURCE)
+ prepare: $(STAMP_CONFIGURED)
+ compile: $(LINUX_DIR)/.modules
+ $(MAKE) -C image compile TARGET_BUILD=
+
+ oldconfig menuconfig: $(STAMP_PREPARED) FORCE
+ [ -e "$(LINUX_CONFIG)" ] || touch "$(LINUX_CONFIG)"
+ $(LINUX_CONFCMD) > $(LINUX_DIR)/.config
+ touch $(LINUX_CONFIG)
+ $(_SINGLE)$(MAKE) -C $(LINUX_DIR) $(KERNEL_MAKEOPTS) $$@
+ $(SCRIPT_DIR)/kconfig.pl '>' $(GENERIC_LINUX_CONFIG) $(LINUX_DIR)/.config > $(if $(LINUX_SUBCONFIG),$(LINUX_SUBCONFIG),$(LINUX_CONFIG))
+ $(Kernel/Configure)
+
+ install: $(LINUX_DIR)/.image
+ +$(MAKE) -C image compile install TARGET_BUILD=
+
+ clean: FORCE