buildroot/toolchain/kernel-headers/kernel-headers.mk

235 lines
8.3 KiB
Makefile

#############################################################
#
# Setup the kernel headers. I include a generic package of
# kernel headers here, so you shouldn't need to include your
# own. Be aware these kernel headers _will_ get blown away
# by a 'make clean' so don't put anything sacred in here...
#
#############################################################
DEFAULT_KERNEL_HEADERS:=$(strip $(subst ",, $(BR2_DEFAULT_KERNEL_HEADERS)))
#"))
LINUX_HEADERS_SITE:=127.0.0.1
LINUX_HEADERS_SOURCE:=unspecified-kernel-headers
LINUX_HEADERS_UNPACK_DIR:=$(TOOL_BUILD_DIR)/linux-libc-headers-null
ifeq ("$(strip $(DEFAULT_KERNEL_HEADERS))","2.4.25")
VERSION:=2
PATCHLEVEL:=4
SUBLEVEL:=25
LINUX_HEADERS_SITE:=http://www.uclibc.org/downloads/toolchain
LINUX_HEADERS_SOURCE:=linux-libc-headers-2.4.25.tar.bz2
LINUX_HEADERS_CAT:=$(BZCAT)
LINUX_HEADERS_UNPACK_DIR:=$(TOOL_BUILD_DIR)/linux-libc-headers-2.4.25
endif
ifeq ("$(strip $(DEFAULT_KERNEL_HEADERS))","2.4.27")
VERSION:=2
PATCHLEVEL:=4
SUBLEVEL:=27
LINUX_HEADERS_SITE:=http://www.uclibc.org/downloads/toolchain
LINUX_HEADERS_CAT:=$(BZCAT)
LINUX_HEADERS_SOURCE:=linux-libc-headers-2.4.27.tar.bz2
LINUX_HEADERS_UNPACK_DIR:=$(TOOL_BUILD_DIR)/linux-libc-headers-2.4.27
endif
ifeq ("$(strip $(DEFAULT_KERNEL_HEADERS))","2.4.29")
VERSION:=2
PATCHLEVEL:=4
SUBLEVEL:=29
LINUX_HEADERS_SITE:=http://www.uclibc.org/downloads/toolchain
LINUX_HEADERS_SOURCE:=linux-libc-headers-2.4.29.tar.bz2
LINUX_HEADERS_CAT:=$(BZCAT)
LINUX_HEADERS_UNPACK_DIR:=$(TOOL_BUILD_DIR)/linux-libc-headers-2.4.29
endif
ifeq ("$(strip $(DEFAULT_KERNEL_HEADERS))","2.4.31")
VERSION:=2
PATCHLEVEL:=4
SUBLEVEL:=31
LINUX_HEADERS_SITE:=http://www.uclibc.org/downloads/toolchain
LINUX_HEADERS_SOURCE:=linux-libc-headers-2.4.31.tar.bz2
LINUX_HEADERS_CAT:=$(BZCAT)
LINUX_HEADERS_UNPACK_DIR:=$(TOOL_BUILD_DIR)/linux-libc-headers-2.4.31
endif
ifeq ("$(strip $(DEFAULT_KERNEL_HEADERS))","2.6.9")
VERSION:=2
PATCHLEVEL:=6
SUBLEVEL:=9
LINUX_HEADERS_SITE:=http://ep09.pld-linux.org/~mmazur/linux-libc-headers/
LINUX_HEADERS_SOURCE:=linux-libc-headers-2.6.9.1.tar.bz2
LINUX_HEADERS_CAT:=$(BZCAT)
LINUX_HEADERS_UNPACK_DIR:=$(TOOL_BUILD_DIR)/linux-libc-headers-2.6.9.1
endif
ifeq ("$(strip $(DEFAULT_KERNEL_HEADERS))","2.6.10")
VERSION:=2
PATCHLEVEL:=6
SUBLEVEL:=10
LINUX_HEADERS_SITE:=http://ep09.pld-linux.org/~mmazur/linux-libc-headers/
LINUX_HEADERS_SOURCE:=linux-libc-headers-2.6.10.0.tar.bz2
LINUX_HEADERS_CAT:=$(BZCAT)
LINUX_HEADERS_UNPACK_DIR:=$(TOOL_BUILD_DIR)/linux-libc-headers-2.6.10.0
endif
ifeq ("$(strip $(DEFAULT_KERNEL_HEADERS))","2.6.11")
VERSION:=2
PATCHLEVEL:=6
SUBLEVEL:=11
LINUX_HEADERS_SITE:=http://ep09.pld-linux.org/~mmazur/linux-libc-headers/
LINUX_HEADERS_SOURCE:=linux-libc-headers-2.6.11.0.tar.bz2
LINUX_HEADERS_CAT:=$(BZCAT)
LINUX_HEADERS_UNPACK_DIR:=$(TOOL_BUILD_DIR)/linux-libc-headers-2.6.11.0
endif
ifeq ("$(strip $(DEFAULT_KERNEL_HEADERS))","2.6.12")
VERSION:=2
PATCHLEVEL:=6
SUBLEVEL:=12
LINUX_HEADERS_SITE:=http://ep09.pld-linux.org/~mmazur/linux-libc-headers/
LINUX_HEADERS_SOURCE:=linux-libc-headers-2.6.12.0.tar.bz2
LINUX_HEADERS_CAT:=$(BZCAT)
LINUX_HEADERS_UNPACK_DIR:=$(TOOL_BUILD_DIR)/linux-libc-headers-2.6.12.0
endif
LINUX_HEADERS_IS_KERNEL=n
ifeq ("$(strip $(DEFAULT_KERNEL_HEADERS))","2.6.18")
VERSION:=2
PATCHLEVEL:=6
SUBLEVEL:=18
LINUX_HEADERS_SITE:=http://www.kernel.org/pub/linux/kernel/v2.6/
LINUX_HEADERS_SOURCE:=linux-2.6.18.3.tar.bz2
LINUX_HEADERS_CAT:=$(BZCAT)
LINUX_HEADERS_UNPACK_DIR:=$(TOOL_BUILD_DIR)/linux-2.6.18.3
LINUX_HEADERS_IS_KERNEL=y
endif
LINUX_HEADERS_VERSION:=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)
LINUX_HEADERS_DIR:=$(TOOL_BUILD_DIR)/linux
LINUX_HEADERS_DO_MOVE=n
ifneq ($(LINUX_HEADERS_UNPACK_DIR),$(LINUX_HEADERS_DIR))
LINUX_HEADERS_DO_MOVE=y
endif
ifeq ($(LINUX_HEADERS_IS_KERNEL),y)
LINUX_HEADERS_DO_MOVE=n
endif
$(DL_DIR)/$(LINUX_HEADERS_SOURCE):
mkdir -p $(DL_DIR)
$(WGET) -P $(DL_DIR) $(LINUX_HEADERS_SITE)/$(LINUX_HEADERS_SOURCE)
ifeq ($(LINUX_HEADERS_DO_MOVE),y)
$(LINUX_HEADERS_DIR)/.unpacked: $(DL_DIR)/$(LINUX_HEADERS_SOURCE)
rm -rf $(LINUX_HEADERS_DIR)
mkdir -p $(TOOL_BUILD_DIR)
$(LINUX_HEADERS_CAT) $(DL_DIR)/$(LINUX_HEADERS_SOURCE) | tar -C $(TOOL_BUILD_DIR) $(TAR_OPTIONS) -
mv $(LINUX_HEADERS_UNPACK_DIR) $(LINUX_HEADERS_DIR)
touch $(LINUX_HEADERS_DIR)/.unpacked
else
$(LINUX_HEADERS_UNPACK_DIR)/.unpacked: $(DL_DIR)/$(LINUX_HEADERS_SOURCE)
rm -rf $(LINUX_HEADERS_DIR)
mkdir -p $(TOOL_BUILD_DIR)
$(LINUX_HEADERS_CAT) $(DL_DIR)/$(LINUX_HEADERS_SOURCE) | tar -C $(TOOL_BUILD_DIR) $(TAR_OPTIONS) -
touch $(LINUX_HEADERS_UNPACK_DIR)/.unpacked
endif
ifeq ($(LINUX_HEADERS_IS_KERNEL),y)
# full kernel tarball >= 2.6.18
KERNEL_ARCH:=$(shell $(SHELL) -c "echo \"$(ARCH)\" | sed -e \"s/-.*//\" \
-e s/i.86/i386/ -e s/sun4u/sparc64/ \
-e s/arm.*/arm/ -e s/sa110/arm/ \
-e s/s390x/s390/ -e s/parisc64/parisc/ \
-e s/ppc.*/powerpc/ -e s/mips.*/mips/")
$(LINUX_HEADERS_UNPACK_DIR)/.patched: $(LINUX_HEADERS_UNPACK_DIR)/.unpacked
toolchain/patch-kernel.sh $(LINUX_HEADERS_UNPACK_DIR) toolchain/kernel-headers linux-$(LINUX_HEADERS_VERSION)\*.patch
touch $(LINUX_HEADERS_UNPACK_DIR)/.patched
$(LINUX_HEADERS_DIR)/.configured: $(LINUX_HEADERS_UNPACK_DIR)/.patched
(cd $(LINUX_HEADERS_UNPACK_DIR) ; \
$(MAKE) ARCH=$(KERNEL_ARCH) INSTALL_HDR_PATH=$(LINUX_HEADERS_DIR) headers_install)
touch $(LINUX_HEADERS_DIR)/.configured
else
# the sanitized kernel-headers
$(LINUX_HEADERS_DIR)/.patched: $(LINUX_HEADERS_DIR)/.unpacked
toolchain/patch-kernel.sh $(LINUX_HEADERS_DIR) toolchain/kernel-headers linux-libc-headers-$(LINUX_HEADERS_VERSION)\*.patch
ifeq ($(strip $(ARCH)),nios2)
toolchain/patch-kernel.sh $(LINUX_HEADERS_DIR) toolchain/kernel-headers linux-libc-headers-$(LINUX_HEADERS_VERSION)-nios2nommu.patch.conditional
endif
touch $(LINUX_HEADERS_DIR)/.patched
$(LINUX_HEADERS_DIR)/.configured: $(LINUX_HEADERS_DIR)/.patched
rm -f $(LINUX_HEADERS_DIR)/include/asm
@if [ ! -f $(LINUX_HEADERS_DIR)/Makefile ] ; then \
echo -e "VERSION = $(VERSION)\nPATCHLEVEL = $(PATCHLEVEL)\n" > \
$(LINUX_HEADERS_DIR)/Makefile; \
echo -e "SUBLEVEL = $(SUBLEVEL)\nEXTRAVERSION =\n" >> \
$(LINUX_HEADERS_DIR)/Makefile; \
echo -e "KERNELRELEASE=\$$(VERSION).\$$(PATCHLEVEL).\$$(SUBLEVEL)\$$(EXTRAVERSION)" >> \
$(LINUX_HEADERS_DIR)/Makefile; \
fi;
@if [ "$(ARCH)" = "powerpc" ];then \
(cd $(LINUX_HEADERS_DIR)/include; ln -fs asm-ppc$(NOMMU) asm;) \
elif [ "$(ARCH)" = "mips" ];then \
(cd $(LINUX_HEADERS_DIR)/include; ln -fs asm-mips$(NOMMU) asm;) \
elif [ "$(ARCH)" = "mipsel" ];then \
(cd $(LINUX_HEADERS_DIR)/include; ln -fs asm-mips$(NOMMU) asm;) \
elif [ "$(ARCH)" = "nios2" ];then \
(cd $(LINUX_HEADERS_DIR)/include; ln -fs asm-nios2nommu asm;) \
elif [ "$(ARCH)" = "arm" ];then \
(cd $(LINUX_HEADERS_DIR)/include; ln -fs asm-arm$(NOMMU) asm; \
cd asm; \
if [ ! -L proc ] ; then \
ln -fs proc-armv proc; \
ln -fs arch-ebsa285 arch; fi); \
elif [ "$(ARCH)" = "armeb" ];then \
(cd $(LINUX_HEADERS_DIR)/include; ln -fs asm-arm$(NOMMU) asm; \
cd asm; \
if [ ! -L proc ] ; then \
ln -fs proc-armv proc; \
ln -fs arch-ebsa285 arch; fi); \
elif [ "$(ARCH)" = "cris" ];then \
(cd $(LINUX_HEADERS_DIR)/include; ln -fs asm-cris asm;) \
elif [ "$(ARCH)" = "sh3" ];then \
(cd $(LINUX_HEADERS_DIR)/include; ln -fs asm-sh asm; \
cd asm; \
ln -s cpu-sh3 cpu) \
elif [ "$(ARCH)" = "sh3eb" ];then \
(cd $(LINUX_HEADERS_DIR)/include; ln -fs asm-sh asm; \
cd asm; \
ln -s cpu-sh3 cpu) \
elif [ "$(ARCH)" = "sh4" ];then \
(cd $(LINUX_HEADERS_DIR)/include; ln -fs asm-sh asm; \
cd asm; \
ln -s cpu-sh4 cpu) \
elif [ "$(ARCH)" = "sh4eb" ];then \
(cd $(LINUX_HEADERS_DIR)/include; ln -fs asm-sh asm; \
cd asm; \
ln -s cpu-sh4 cpu) \
elif [ "$(ARCH)" = "i386" -o "$(ARCH)" = "i486" -o "$(ARCH)" = "i586" -o "$(ARCH)" = "i686" ];then \
(cd $(LINUX_HEADERS_DIR)/include; ln -fs asm-i386$(NOMMU) asm;) \
else \
(cd $(LINUX_HEADERS_DIR)/include; ln -fs asm-$(ARCH)$(NOMMU) asm;) \
fi
touch $(LINUX_HEADERS_DIR)/include/linux/autoconf.h;
touch $(LINUX_HEADERS_DIR)/.configured
endif
$(LINUX_KERNEL): $(LINUX_HEADERS_DIR)/.configured
kernel-headers: $(LINUX_HEADERS_DIR)/.configured
kernel-headers-source: $(DL_DIR)/$(LINUX_HEADERS_SOURCE)
kernel-headers-clean: clean
rm -f $(LINUX_KERNEL)
rm -rf $(LINUX_HEADERS_DIR)
kernel-headers-dirclean:
rm -rf $(LINUX_HEADERS_DIR)
.PHONY: kernel-headers