2013-06-30 21:28:58 +02:00
|
|
|
################################################################################
|
|
|
|
#
|
|
|
|
# linux-headers
|
|
|
|
#
|
|
|
|
################################################################################
|
|
|
|
|
|
|
|
# This package is used to provide Linux kernel headers for the
|
|
|
|
# internal toolchain backend.
|
|
|
|
|
|
|
|
LINUX_HEADERS_VERSION = $(call qstrip,$(BR2_DEFAULT_KERNEL_HEADERS))
|
|
|
|
ifeq ($(findstring x2.6.,x$(LINUX_HEADERS_VERSION)),x2.6.)
|
2014-07-31 10:46:58 +02:00
|
|
|
LINUX_HEADERS_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/v2.6
|
2013-06-30 21:28:58 +02:00
|
|
|
else
|
2014-07-31 10:46:58 +02:00
|
|
|
LINUX_HEADERS_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/v3.x
|
2013-06-30 21:28:58 +02:00
|
|
|
endif
|
2013-07-04 12:50:38 +02:00
|
|
|
LINUX_HEADERS_SOURCE = linux-$(LINUX_HEADERS_VERSION).tar.xz
|
2013-06-30 21:28:58 +02:00
|
|
|
|
|
|
|
LINUX_HEADERS_INSTALL_STAGING = YES
|
|
|
|
|
2014-02-14 10:55:04 +01:00
|
|
|
# linux-headers is part of the toolchain so disable the toolchain dependency
|
|
|
|
LINUX_HEADERS_ADD_TOOLCHAIN_DEPENDENCY = NO
|
|
|
|
|
2014-02-23 15:35:18 +01:00
|
|
|
# For some architectures (eg. Arc, Cris, Hexagon, ia64, parisc,
|
|
|
|
# score and xtensa), the Linux buildsystem tries to call the
|
|
|
|
# cross-compiler, although it is not needed at all.
|
|
|
|
# This results in seemingly errors like:
|
|
|
|
# [...]/scripts/gcc-version.sh: line 26: arc-linux-uclibc-gcc: command not found
|
|
|
|
# Those can be safely ignored.
|
2014-06-04 22:27:33 +02:00
|
|
|
|
|
|
|
# This step is required to have a separate linux headers location for
|
|
|
|
# uClibc building. This way uClibc doesn't modify linux headers on installation
|
|
|
|
# of "its" headers
|
|
|
|
define LINUX_HEADERS_CONFIGURE_CMDS
|
|
|
|
(cd $(@D); \
|
|
|
|
$(TARGET_MAKE_ENV) $(MAKE) \
|
|
|
|
ARCH=$(KERNEL_ARCH) \
|
|
|
|
HOSTCC="$(HOSTCC)" \
|
|
|
|
HOSTCFLAGS="$(HOSTCFLAGS)" \
|
|
|
|
HOSTCXX="$(HOSTCXX)" \
|
|
|
|
headers_install)
|
|
|
|
endef
|
|
|
|
|
2013-06-30 21:28:58 +02:00
|
|
|
define LINUX_HEADERS_INSTALL_STAGING_CMDS
|
|
|
|
(cd $(@D); \
|
|
|
|
$(TARGET_MAKE_ENV) $(MAKE) \
|
|
|
|
ARCH=$(KERNEL_ARCH) \
|
|
|
|
HOSTCC="$(HOSTCC)" \
|
|
|
|
HOSTCFLAGS="$(HOSTCFLAGS)" \
|
|
|
|
HOSTCXX="$(HOSTCXX)" \
|
|
|
|
INSTALL_HDR_PATH=$(STAGING_DIR)/usr \
|
|
|
|
headers_install)
|
|
|
|
endef
|
|
|
|
|
2014-03-01 15:53:02 +01:00
|
|
|
ifeq ($(BR2_KERNEL_HEADERS_VERSION),y)
|
|
|
|
define LINUX_HEADERS_CHECK_VERSION
|
|
|
|
$(call check_kernel_headers_version,\
|
support/check-kernel-headers: fix old custom toolchains without -print-sysroot
Old toolchains, with old gcc that do not support -print-sysroot, break the
kernel-headers version check script: it fails to find the sysroot of the
toolchain, and thus ends up including the host's linux/version.h.
Most of the time, this will break early, since the host's kernel headers
will not match the toolchain settings.
But it can happen that the check is succesful, although the configuration
of the toolchain is wrong:
- the custom toolchain has kernel headers vX.Y
- the user selected vX.Z (Z!=Y)
- the host has headers vX.Y
In this case, the check passes OK, but the build of some packages later on
will break (which is exactly what those _AT_LEAST_XXX options were added to
avoid).
Fix that by passing the sysroot to the check script, instead of the cross
compiler.
We get the sysroot as thus:
- for custom toolchains, we use the macro toolchain_find_sysroot. We can
do that, because we already have a complete sysroot with libc.a at that
time.
- for internal toolchain using a custom kernel headers version, we just
use $(STAGING_DIR). We can't use the macro as for custom toolchains
above, because at the time we install the kernel headers, we do not yet
have a complete sysroot with a libc.a. But we can just use
$(STAGING_DIR), since we're only interested in the kernel headers.
For all other types of toolchains, we already have the _AT_LEAST_XXX options
properly set, so we need not add a check in this case.
Fixes:
http://autobuild.buildroot.net/results/f33/f331a6eff0b0b93c73af52db3a6b43e4e598577e/
http://autobuild.buildroot.net/results/a57/a5797c025bec50c10efdcff74945aab4021d05e4/
[...]
[Thanks to Thomas for pointing out the toolchain_find_sysroot macro!]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2014-04-07 20:19:12 +02:00
|
|
|
$(STAGING_DIR),\
|
2014-03-01 15:53:02 +01:00
|
|
|
$(call qstrip,$(BR2_TOOLCHAIN_HEADERS_AT_LEAST)))
|
|
|
|
endef
|
|
|
|
LINUX_HEADERS_POST_INSTALL_STAGING_HOOKS += LINUX_HEADERS_CHECK_VERSION
|
|
|
|
endif
|
|
|
|
|
2013-06-30 21:28:58 +02:00
|
|
|
$(eval $(generic-package))
|