kumquat-buildroot/target/linux/Makefile.in
Peter Korsgaard 98de259aee linux: zImage target no longer available on x86
The legacy zImage target for x86 was removed from the kernel in 2.6.30,
and we state in Config.in that we'll use bzImage if BR2_PACKAGE_LINUX_FORMAT
isn't set, so ensure we do so for x86.

Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2010-05-28 12:03:56 +02:00

251 lines
8.0 KiB
Makefile

#############################################################
#
# Linux kernel 2.6 target
#
#############################################################
ifneq ($(filter $(TARGETS),linux26),)
ifeq ($(DOWNLOAD_LINUX26_VERSION),)
# User did not define linux version, try using headers
ifeq ($(LINUX_HEADERS_VERSION),)
# We did not have headers (this is for real???)
# Version of linux before patches
DOWNLOAD_LINUX26_VERSION=2.6.22.1
# Version of Linux after applying any patches
LINUX26_VERSION=2.6.22.1
else
# OK, we have headers, use them...
DOWNLOAD_LINUX26_VERSION=$(LINUX_HEADERS_VERSION)
LINUX26_VERSION=$(LINUX_HEADERS_VERSION)
endif
endif
LINUX26_SOURCE=linux-$(DOWNLOAD_LINUX26_VERSION).tar.bz2
LINUX26_BZCAT:=$(BZCAT)
LINUX26_SITE=$(BR2_KERNEL_MIRROR)/linux/kernel/v2.6
ifeq ($(BOARD_PATH),)
BOARD_PATH:=$(call qstrip,$(BR2_BOARD_PATH))
endif
# Linux kernel configuration file
# Has to be set by the target/device
# If it is not set by the target/device, then pick the one from .config
ifndef LINUX26_KCONFIG
ifneq ($(call qstrip,$(BR2_PACKAGE_LINUX_KCONFIG)),)
LINUX26_KCONFIG=$(call qstrip,$(BR2_PACKAGE_LINUX_KCONFIG))
else
# LINUX26_KCONFIG=$(BOARD_PATH)/linux26.config
endif
endif
ifndef LINUX26_FORMAT
ifneq ($(call qstrip,$(BR2_PACKAGE_LINUX_FORMAT)),)
LINUX26_FORMAT=$(call qstrip,$(BR2_PACKAGE_LINUX_FORMAT))
else
ifneq ($(filter i386 x86-64,$(KERNEL_ARCH)),)
# zImage target no longer available on x86 since 2.6.30
LINUX26_FORMAT=bzImage
else
LINUX26_FORMAT=zImage
endif
endif
endif
# Has to be set by the target/device
ifndef LINUX26_BINLOC
# default:
ifeq ($(LINUX26_FORMAT),vmlinux)
LINUX26_BINLOC=$(LINUX26_FORMAT)
else
ifeq ($(BR2_ARCH),"cris")
LINUX26_BINLOC=arch/$(KERNEL_ARCH)/arch-v10/boot/$(LINUX26_FORMAT)
else
LINUX26_BINLOC=arch/$(KERNEL_ARCH)/boot/$(LINUX26_FORMAT)
endif
endif
endif
# File name for the Linux kernel binary
ifndef LINUX26_KERNEL
LINUX26_KERNEL_NAME=$(BINARIES_DIR)/$(LINUX26_FORMAT)
endif
# Version of Linux AFTER patches
LINUX26_DIR=$(BUILD_DIR)/linux-$(LINUX26_VERSION)
# for packages that need it
LINUX_VERSION:=$(LINUX26_VERSION)
LINUX_DIR=$(LINUX26_DIR)
LINUX_KERNEL=$(LINUX26_KERNEL_NAME)
# kernel patches
ifeq ($(strip $(LINUX26_PATCH_DIR)),)
ifneq ($(BOARD_PATH),)
LINUX26_PATCH_DIR:=$(BOARD_PATH)/kernel-patches/
endif
endif
LINUX26_MAKE_FLAGS = HOSTCC="$(HOSTCC)" HOSTCFLAGS="$(HOSTCFLAGS)" \
ARCH=$(KERNEL_ARCH) \
INSTALL_MOD_PATH=$(TARGET_DIR) \
CROSS_COMPILE=$(TARGET_CROSS) \
LDFLAGS="$(TARGET_LDFLAGS)" \
LZMA="$(LZMA)"
$(LINUX26_KCONFIG):
@if [ ! -f "$(LINUX26_KCONFIG)" ] ; then \
echo ""; \
echo "You should create a .config for your kernel"; \
echo "and install it as $(LINUX26_KCONFIG)"; \
echo ""; \
sleep 5; \
fi
ifneq ($(strip $(LINUX26_VERSION)),$(strip $(LINUX_HEADERS_VERSION)))
$(DL_DIR)/$(LINUX26_SOURCE):
$(call DOWNLOAD,$(LINUX26_SITE),$(LINUX26_SOURCE))
endif # ($(LINUX26_VERSION),$(LINUX_HEADERS_VERSION))
$(LINUX26_DIR)/.unpacked: $(DL_DIR)/$(LINUX26_SOURCE)
rm -rf $(LINUX26_DIR)
@echo "*** Unpacking kernel source"
$(LINUX26_BZCAT) $(DL_DIR)/$(LINUX26_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
ifneq ($(DOWNLOAD_LINUX26_VERSION),$(LINUX26_VERSION))
# Rename the dir from the downloaded version to the AFTER patch version
mv -f $(BUILD_DIR)/linux-$(DOWNLOAD_LINUX26_VERSION) $(LINUX26_DIR)
endif
touch $@
$(LINUX26_DIR)/.patched: $(LINUX26_DIR)/.unpacked $(LINUX_HEADERS_DEPENDS)
toolchain/patch-kernel.sh $(LINUX26_DIR) toolchain/kernel-headers \
linux-$(LINUX26_VERSION)-\*.patch{,.gz,.bz2}
ifeq ($(BR2_KERNEL_HEADERS_RT),y)
toolchain/patch-kernel.sh $(LINUX26_DIR) $(DL_DIR) $(LINUX_RT_SOURCE)
endif
ifneq ($(KERNEL_HEADERS_PATCH_DIR),)
toolchain/patch-kernel.sh $(LINUX26_DIR) $(KERNEL_HEADERS_PATCH_DIR) \
linux-$(LINUX26_VERSION)-\*.patch{,.gz,.bz2}
endif
ifeq ($(BR2_PACKAGE_OPENSWAN),y)
toolchain/patch-kernel.sh $(LINUX26_DIR) package/openswan \
linux-$(LINUX26_VERSION)-\*.patch{,.gz,.bz2}
endif
ifneq ($(LINUX26_PATCH_DIR),)
if [ -d $(LINUX26_PATCH_DIR) ] ; then \
toolchain/patch-kernel.sh $(LINUX26_DIR) $(LINUX26_PATCH_DIR) linux-$(LINUX26_VERSION)\*.patch ; \
fi
endif
touch $@
$(LINUX26_DIR)/.configured: $(LINUX26_DIR)/.patched $(LINUX26_KCONFIG)
cp -dpf $(LINUX26_KCONFIG) $(LINUX26_DIR)/.config
$(SED) '/CONFIG_AEABI=y/d' $(LINUX26_DIR)/.config
ifeq ($(BR2_ARM_EABI),y)
echo "CONFIG_AEABI=y" >> $(LINUX26_DIR)/.config
$(SED) '/CONFIG_OABI_COMPAT/d' $(LINUX26_DIR)/.config
echo "# CONFIG_OABI_COMPAT is not set" >> $(LINUX26_DIR)/.config
else
echo "# CONFIG_AEABI is not set" >> $(LINUX26_DIR)/.config
endif
$(SED) '/CONFIG_IPV6=y/d' $(LINUX26_DIR)/.config
ifeq ($(BR2_INET_IPV6),y)
echo "CONFIG_IPV6=y" >> $(LINUX26_DIR)/.config
else
echo "# CONFIG_IPV6 is not set" >> $(LINUX26_DIR)/.config
endif
$(SED) '/CONFIG_INITRAMFS_SOURCE/d' $(LINUX26_DIR)/.config
$(SED) '/INITRAMFS_ROOT_.ID/d' $(LINUX26_DIR)/.config
ifeq ($(BR2_TARGET_ROOTFS_INITRAMFS),y)
echo "CONFIG_INITRAMFS_SOURCE=\"$(BINARIES_DIR)/rootfs.initramfs\"" >> \
$(LINUX26_DIR)/.config
echo "CONFIG_INITRAMFS_ROOT_UID=0" >> $(LINUX26_DIR)/.config
echo "CONFIG_INITRAMFS_ROOT_GID=0" >> $(LINUX26_DIR)/.config
else
echo "CONFIG_INITRAMFS_SOURCE=\"\"" >> $(LINUX26_DIR)/.config
endif
ifeq ($(BR2_PACKAGE_BUSYBOX_INITRAMFS),y)
# precedence for a small initramfs
$(SED) '/CONFIG_INITRAMFS_SOURCE/d' $(LINUX26_DIR)/.config
$(SED) '/INITRAMFS_ROOT_.ID/d' $(LINUX26_DIR)/.config
echo "CONFIG_INITRAMFS_SOURCE=\"$(BB_INITRAMFS_TARGET)\"" >> \
$(LINUX26_DIR)/.config
echo "CONFIG_INITRAMFS_ROOT_UID=0" >> $(LINUX26_DIR)/.config
echo "CONFIG_INITRAMFS_ROOT_GID=0" >> $(LINUX26_DIR)/.config
endif
$(MAKE) $(LINUX26_MAKE_FLAGS) -C $(LINUX26_DIR) oldconfig
touch $@
$(LINUX26_DIR)/.depend_done: $(LINUX26_DIR)/.configured
$(MAKE) $(LINUX26_MAKE_FLAGS) -C $(LINUX26_DIR) prepare
touch $@
$(LINUX26_KERNEL_NAME): $(INITRAMFS_TARGET) $(BB_INITRAMFS_TARGET) \
$(LINUX26_DIR)/.depend_done
$(MAKE) $(LINUX26_MAKE_FLAGS) \
-C $(LINUX26_DIR) $(LINUX26_FORMAT)
cp -pf $(LINUX26_DIR)/$(LINUX26_BINLOC) $(LINUX26_KERNEL_NAME)
touch -c $@
$(TARGET_DIR)/lib/modules/$(LINUX26_VERSION)/modules.dep: $(LINUX26_DIR)/.configured
rm -rf $(TARGET_DIR)/lib/modules/$(LINUX26_VERSION)
rm -f $(TARGET_DIR)/sbin/cardmgr
@if grep -q CONFIG_MODULES=y $(LINUX26_DIR)/.config; then \
set -x; \
echo "Have CONFIG_MODULES"; \
$(MAKE) $(LINUX26_MAKE_FLAGS) -C $(LINUX26_DIR) modules; \
$(MAKE) $(LINUX26_MAKE_FLAGS) -C $(LINUX26_DIR) \
DEPMOD=$(STAGING_DIR)/bin/$(GNU_TARGET_NAME)-depmod26 \
INSTALL_MOD_PATH=$(TARGET_DIR) modules_install; \
rm -f $(TARGET_DIR)/lib/modules/$(LINUX26_VERSION)/build \
$(TARGET_DIR)/lib/modules/$(LINUX26_VERSION)/source; \
$(STAGING_DIR)/bin/$(GNU_TARGET_NAME)-depmod26 -b $(TARGET_DIR) $(LINUX_HEADERS_VERSION); \
else \
echo "No CONFIG_MODULES"; \
fi
touch -c $@
linux26-menuconfig: host-sed dirs $(LINUX26_DIR)/.patched
if [ ! -f $(LINUX26_DIR)/.config ]; then \
[ -n "$(LINUX26_KCONFIG)" ] && [ -f $(LINUX26_KCONFIG) ] && \
cp $(LINUX26_KCONFIG) $(LINUX26_DIR)/.config || \
true; \
fi
$(MAKE) $(LINUX26_MAKE_FLAGS) -C $(LINUX26_DIR) menuconfig
-[ -f $(LINUX26_DIR)/.config ] && touch $(LINUX26_DIR)/.configured
linux26-xconfig: host-sed dirs $(LINUX26_DIR)/.patched
[ -f $(LINUX26_DIR)/.config ] || cp $(LINUX26_KCONFIG) $(LINUX26_DIR)/.config
$(MAKE) $(LINUX26_MAKE_FLAGS) -C $(LINUX26_DIR) xconfig
-[ -f $(LINUX26_DIR)/.config ] && touch $(LINUX26_DIR)/.configured
linux26: $(LINUX26_KERNEL_NAME)
$(LINUX26_DIR)/.modules_installed: $(TARGET_DIR)/lib/modules/$(LINUX26_VERSION)/modules.dep
touch $@
linux26-modules: cross-depmod26 $(LINUX26_DIR)/.modules_installed
linux26-source: $(DL_DIR)/$(LINUX26_SOURCE)
linux26-unpacked: $(LINUX26_DIR)/.patched
linux26-config: host-sed $(LINUX26_DIR)/.configured
linux26-update:
cp -dpf $(LINUX26_DIR)/.config $(LINUX26_KCONFIG)
# force rebuild
linux26-force:
touch $(LINUX26_DIR)/.configured
# This has been renamed so we do _NOT_ by default run this on 'make clean'
linux26clean:
rm -f $(LINUX26_KERNEL_NAME) $(LINUX26_DIR)/.configured
-$(MAKE) PATH=$(TARGET_PATH) -C $(LINUX26_DIR) clean
linux26-dirclean:
rm -rf $(LINUX26_DIR)
endif