Import buildroot 2016.02.01

This commit is contained in:
2016-02-24 22:35:39 +01:00
parent a6ee09dea4
commit 828befcf3c
7393 changed files with 390887 additions and 0 deletions

View File

@@ -0,0 +1,45 @@
From 63a3f603413ffe82ad775f2d62a5afff87fd94a0 Mon Sep 17 00:00:00 2001
From: "H. Peter Anvin" <hpa@linux.intel.com>
Date: Thu, 7 Feb 2013 17:14:08 -0800
Subject: [PATCH] timeconst.pl: Eliminate Perl warning
defined(@array) is deprecated in Perl and gives off a warning.
Restructure the code to remove that warning.
[ hpa: it would be interesting to revert to the timeconst.bc script.
It appears that the failures reported by akpm during testing of
that script was due to a known broken version of make, not a problem
with bc. The Makefile rules could probably be restructured to avoid
the make bug, or it is probably old enough that it doesn't matter. ]
Reported-by: Andi Kleen <ak@linux.intel.com>
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: <stable@vger.kernel.org>
Signed-off-by: Gustavo Zacarias <gustavo.zacarias@free-electrons.com>
---
Patch status: upstream
kernel/timeconst.pl | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/kernel/timeconst.pl b/kernel/timeconst.pl
index eb51d76..3f42652 100644
--- a/kernel/timeconst.pl
+++ b/kernel/timeconst.pl
@@ -369,10 +369,8 @@ if ($hz eq '--can') {
die "Usage: $0 HZ\n";
}
- @val = @{$canned_values{$hz}};
- if (!defined(@val)) {
- @val = compute_values($hz);
- }
+ $cv = $canned_values{$hz};
+ @val = defined($cv) ? @$cv : compute_values($hz);
output($hz, @val);
}
exit 0;
--
2.4.10

View File

@@ -0,0 +1,67 @@
menu "Linux Kernel Extensions"
# Xenomai
config BR2_LINUX_KERNEL_EXT_XENOMAI
bool "Adeos/Xenomai Real-time patch"
depends on BR2_TOOLCHAIN_HAS_THREADS
depends on BR2_i386 || BR2_x86_64 || BR2_arm || \
BR2_bfin || BR2_powerpc || BR2_sh4
select BR2_PACKAGE_XENOMAI
help
Xenomai is split in two parts: a kernel part and a userspace
part. Enabling this option automatically selects the Xenomai
package and helps in patching the Linux kernel built by
Buildroot with the Xenomai kernel part (ie Adeos/Ipipe).
You can find the currently supported kernel versions by
looking at the available patches in the Xenomai sources
tree: ksrc/arch/$(ARCH)/patches
However, it is recommended to use the latest version of the
Adeos/Ipipe patch available at
http://download.gna.org/adeos/patches
Xenomai is know to support Blackfin, SH4, x86, ARM, NIOS2
and PowerPC architectures.
comment "xenomai needs a toolchain w/ threads"
depends on BR2_i386 || BR2_x86_64 || BR2_arm || \
BR2_bfin || BR2_powerpc || BR2_sh4
depends on !BR2_TOOLCHAIN_HAS_THREADS
config BR2_LINUX_KERNEL_EXT_XENOMAI_ADEOS_PATCH
depends on BR2_LINUX_KERNEL_EXT_XENOMAI
string "Path for Adeos patch file"
help
Optionally, explicitly specify the Adeos patch to use.
Download it at http://download.gna.org/adeos/patches
and verify that your kernel version in buildroot matches.
# RTAI
config BR2_LINUX_KERNEL_EXT_RTAI
bool "RTAI Real-time patch"
select BR2_PACKAGE_RTAI
help
RTAI Kernel part.
# fbtft
config BR2_LINUX_KERNEL_EXT_FBTFT
bool "FB TFT drivers"
select BR2_PACKAGE_FBTFT
help
Linux Framebuffer drivers for small TFT LCD display modules,
e.g. Adafruit PiTFT displays for Raspberry Pi (this extra
package is only needed for linux kernels until v3.19, since
v4.0 the drivers are included in the staging area).
To enable fbtft, e.g. for Adafruit 2.8 PiTFT, enable the
following kernel configurations:
- CONFIG_SPI
- CONFIG_GPIOLIB
- CONFIG_FB
- CONFIG_FB_TFT
- CONFIG_FB_TFT_ILI9341
https://github.com/notro/fbtft
endmenu

View File

@@ -0,0 +1,406 @@
menu "Kernel"
config BR2_LINUX_KERNEL
bool "Linux Kernel"
help
Enable this option if you want to build a Linux kernel for
your embedded device
if BR2_LINUX_KERNEL
# Packages that need to have a kernel with support for loadable modules,
# but do not use the kernel-modules infrastructure, should select that
# option.
config BR2_LINUX_NEEDS_MODULES
bool
#
# Version selection. We provide the choice between:
#
# 1. A single fairly recent stable kernel version
# 2. In case an internal toolchain has been built, the same kernel
# version as the kernel headers
# 3. A custom stable version
# 4. A custom tarball
#
choice
prompt "Kernel version"
config BR2_LINUX_KERNEL_LATEST_VERSION
bool "4.4.2"
config BR2_LINUX_KERNEL_CUSTOM_VERSION
bool "Custom version"
help
This option allows to use a specific official version from
kernel.org, like 2.6.x, 2.6.x.y, 3.x.y, ...
Note: you cannot use this option to select a _longterm_ 2.6
kernel, because these kernels are not located at the standard
URL at kernel.org. Instead, select "Custom tarball" and
specify the right URL directly.
config BR2_LINUX_KERNEL_CUSTOM_TARBALL
bool "Custom tarball"
help
This option allows to specify a URL pointing to a kernel source
tarball. This URL can use any protocol recognized by Buildroot,
like http://, ftp://, file:// or scp://.
When pointing to a local tarball using file://, you may want to
use a make variable like $(TOPDIR) to reference the root of the
Buildroot tree.
config BR2_LINUX_KERNEL_CUSTOM_GIT
bool "Custom Git repository"
help
This option allows Buildroot to get the Linux kernel source
code from a Git repository.
config BR2_LINUX_KERNEL_CUSTOM_HG
bool "Custom Mercurial repository"
help
This option allows Buildroot to get the Linux kernel source
code from a Mercurial repository.
config BR2_LINUX_KERNEL_CUSTOM_LOCAL
bool "Local directory"
help
This option allows Buildroot to get the Linux kernel source
code from a local directory.
endchoice
config BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE
string "Kernel version"
depends on BR2_LINUX_KERNEL_CUSTOM_VERSION
config BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION
string "URL of custom kernel tarball"
depends on BR2_LINUX_KERNEL_CUSTOM_TARBALL
if BR2_LINUX_KERNEL_CUSTOM_GIT || BR2_LINUX_KERNEL_CUSTOM_HG
config BR2_LINUX_KERNEL_CUSTOM_REPO_URL
string "URL of custom repository"
default BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL \
if BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL != "" # legacy
config BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION
string "Custom repository version"
default BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION \
if BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION != "" # legacy
help
Revision to use in the typical format used by Git/Mercurial
E.G. a sha id, a tag, branch, ..
endif
config BR2_LINUX_KERNEL_CUSTOM_LOCAL_PATH
string "Path to the local directory"
depends on BR2_LINUX_KERNEL_CUSTOM_LOCAL
help
Path to the local directory with the Linux kernel source code.
config BR2_LINUX_KERNEL_VERSION
string
default "4.4.2" if BR2_LINUX_KERNEL_LATEST_VERSION
default BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE \
if BR2_LINUX_KERNEL_CUSTOM_VERSION
default "custom" if BR2_LINUX_KERNEL_CUSTOM_TARBALL
default BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION \
if BR2_LINUX_KERNEL_CUSTOM_GIT || BR2_LINUX_KERNEL_CUSTOM_HG
default "custom" if BR2_LINUX_KERNEL_CUSTOM_LOCAL
#
# Patch selection
#
config BR2_LINUX_KERNEL_PATCH
string "Custom kernel patches"
depends on !BR2_LINUX_KERNEL_CUSTOM_LOCAL
help
A space-separated list of patches to apply to the
kernel. Each patch can be described as an URL, a local file
path, or a directory. In the case of a directory, all files
matching *.patch in the directory will be applied.
#
# Configuration selection
#
choice
prompt "Kernel configuration"
default BR2_LINUX_KERNEL_USE_DEFCONFIG
config BR2_LINUX_KERNEL_USE_DEFCONFIG
bool "Using an in-tree defconfig file"
config BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG
bool "Using a custom (def)config file"
endchoice
config BR2_LINUX_KERNEL_DEFCONFIG
string "Defconfig name"
depends on BR2_LINUX_KERNEL_USE_DEFCONFIG
help
Name of the kernel defconfig file to use, without the
trailing _defconfig. The defconfig is located in
arch/<arch>/configs in the kernel tree.
config BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE
string "Configuration file path"
depends on BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG
help
Path to the kernel configuration file
Note: this can be a defconfig file or a complete .config file,
which can later be saved back with make linux-update-(def)config.
config BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES
string "Additional configuration fragment files"
help
A space-separated list of kernel configuration fragment files,
that will be merged to the main kernel configuration file.
#
# Binary format
#
config BR2_LINUX_KERNEL_UBOOT_IMAGE
bool
choice
prompt "Kernel binary format"
config BR2_LINUX_KERNEL_UIMAGE
bool "uImage"
depends on BR2_arc || BR2_arm || BR2_armeb || BR2_bfin || \
BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le || \
BR2_sh || BR2_sh64 || BR2_mips || BR2_mipsel || \
BR2_mips64 || BR2_mips64el
select BR2_LINUX_KERNEL_UBOOT_IMAGE
config BR2_LINUX_KERNEL_APPENDED_UIMAGE
bool "uImage with appended DT"
depends on BR2_arm || BR2_armeb
select BR2_LINUX_KERNEL_DTS_SUPPORT
select BR2_LINUX_KERNEL_APPENDED_DTB
select BR2_LINUX_KERNEL_UBOOT_IMAGE
config BR2_LINUX_KERNEL_BZIMAGE
bool "bzImage"
depends on BR2_i386 || BR2_x86_64
config BR2_LINUX_KERNEL_ZIMAGE
bool "zImage"
depends on BR2_arm || BR2_armeb || BR2_powerpc || \
BR2_powerpc64 || BR2_powerpc64le || BR2_sparc || \
BR2_sh || BR2_sh64 || BR2_xtensa
config BR2_LINUX_KERNEL_ZIMAGE_EPAPR
bool "zImage.epapr"
depends on BR2_powerpc64 || BR2_powerpc64le
config BR2_LINUX_KERNEL_APPENDED_ZIMAGE
bool "zImage with appended DT"
depends on BR2_arm || BR2_armeb
select BR2_LINUX_KERNEL_DTS_SUPPORT
select BR2_LINUX_KERNEL_APPENDED_DTB
config BR2_LINUX_KERNEL_CUIMAGE
bool "cuImage"
depends on BR2_powerpc
select BR2_LINUX_KERNEL_UBOOT_IMAGE
select BR2_LINUX_KERNEL_DTS_SUPPORT
select BR2_LINUX_KERNEL_DTB_IS_SELF_BUILT
config BR2_LINUX_KERNEL_SIMPLEIMAGE
bool "simpleImage"
depends on BR2_microblaze
select BR2_LINUX_KERNEL_UBOOT_IMAGE
select BR2_LINUX_KERNEL_DTS_SUPPORT
select BR2_LINUX_KERNEL_DTB_IS_SELF_BUILT
config BR2_LINUX_KERNEL_IMAGE
bool "Image"
depends on BR2_aarch64
config BR2_LINUX_KERNEL_LINUX_BIN
bool "linux.bin"
depends on BR2_microblaze
select BR2_LINUX_KERNEL_UBOOT_IMAGE
config BR2_LINUX_KERNEL_VMLINUX_BIN
bool "vmlinux.bin"
depends on BR2_mips || BR2_mipsel || BR2_sh || BR2_sh64
config BR2_LINUX_KERNEL_VMLINUX
bool "vmlinux"
config BR2_LINUX_KERNEL_VMLINUZ
bool "vmlinuz"
depends on BR2_mips || BR2_mipsel
config BR2_LINUX_KERNEL_VMLINUZ_BIN
bool "vmlinuz.bin"
depends on BR2_mips || BR2_mipsel
config BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM
bool "custom target"
help
For certain cases a board-specific target image must be
used. For example, on powerPC where the OpenFirmware
description is attached in a board-specific kernel image
target like 'cuImage.mpc8379_rdb'.
Select this option and specify the make target in "Kernel
image target name".
endchoice
#
# Kernel compression format
#
choice
prompt "Kernel compression format"
help
This selection will just ensure that the correct host tools are build.
The actual compression for the kernel should be selected in the
kernel configuration menu.
config BR2_LINUX_KERNEL_GZIP
bool "gzip compression"
config BR2_LINUX_KERNEL_LZ4
bool "lz4 compression"
config BR2_LINUX_KERNEL_LZMA
bool "lzma compression"
config BR2_LINUX_KERNEL_LZO
bool "lzo compression"
config BR2_LINUX_KERNEL_XZ
bool "xz compression"
endchoice
config BR2_LINUX_KERNEL_IMAGE_TARGET_NAME
string "Kernel image target name"
depends on BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM
help
Specify the kernel make target to build the kernel that you
need.
config BR2_LINUX_KERNEL_IMAGE_NAME
string "Kernel image name"
depends on BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM
help
The filename of the kernel image, if it is different from the
make target (above). Only Xtensa uses a filename different from
the make target. Defaults to BR2_LINUX_KERNEL_IMAGE_TARGET_NAME.
If unsure, leave it empty.
config BR2_LINUX_KERNEL_UIMAGE_LOADADDR
string "load address (for 3.7+ multi-platform image)"
depends on BR2_arm || BR2_armeb
depends on BR2_LINUX_KERNEL_UIMAGE || BR2_LINUX_KERNEL_APPENDED_UIMAGE
help
If your ARM system's Linux kernel is configured with the new (3.7+)
multi-architecture support (CONFIG_ARCH_MULTIPLATFORM=y in your
kernel config), then it is necessary to specify a kernel load address
when building the uImage. This should be a hexadecimal string
beginning with 0x, for example: 0x00008000.
If unsure, let this option empty.
config BR2_LINUX_KERNEL_DTS_SUPPORT
bool "Build a Device Tree Blob (DTB)"
help
Compile one or more device tree sources into device tree blobs.
Select the dts files to compile in the options below.
if BR2_LINUX_KERNEL_DTS_SUPPORT
# We have mainly three cases when it comes to device tree support:
# 1) We don't want any support at all. Then the ..DTS_SUPPORT
# variable won't be set
# 2) We want device tree support, so we need the user to enter the
# device tree name or the path to the custom device he uses, but
# the kernel abstracts this from us and only build an image that
# looks like a regular kernel image. In this case, we only need
# to derive the kernel image name from the given device tree
# name, and all the rest is as usual
# 3) We want device tree support, but the kernel requires us to
# build the device tree blob separately. In this case, some
# more logic will be needed.
# The variable below address the second case, were you only want
# limited actions from buildroot.
config BR2_LINUX_KERNEL_DTB_IS_SELF_BUILT
bool
config BR2_LINUX_KERNEL_APPENDED_DTB
bool
choice
prompt "Device tree source"
default BR2_LINUX_KERNEL_USE_INTREE_DTS
config BR2_LINUX_KERNEL_USE_INTREE_DTS
bool "Use a device tree present in the kernel."
help
Use a device tree source distributed with
the kernel sources. The dts files are located
in the arch/<arch>/boot/dts folder.
config BR2_LINUX_KERNEL_USE_CUSTOM_DTS
bool "Use a custom device tree file"
help
Use a custom device tree file, i.e, a device
tree file that does not belong to the kernel
source tree.
endchoice
config BR2_LINUX_KERNEL_INTREE_DTS_NAME
string "Device Tree Source file names"
depends on BR2_LINUX_KERNEL_USE_INTREE_DTS
help
Name of the device tree source file, without
the trailing .dts. You can provide a list of
dts files to build, separated by spaces.
config BR2_LINUX_KERNEL_CUSTOM_DTS_PATH
string "Device Tree Source file paths"
depends on BR2_LINUX_KERNEL_USE_CUSTOM_DTS
help
Path to the device tree source files. You can
provide a list of dts paths to copy and build,
separated by spaces.
endif
config BR2_LINUX_KERNEL_INSTALL_TARGET
bool "Install kernel image to /boot in target"
depends on !BR2_TARGET_ROOTFS_INITRAMFS
help
Select this option to have the kernel image installed to
/boot in the target root filesystem, as is typically done on
x86/x86_64 systems.
Note that this option also installs the Device Tree Blobs to
/boot if DTBs have been generated by the kernel build
process.
# Linux extensions
source "linux/Config.ext.in"
# Linux tools
source "linux/Config.tools.in"
endif # BR2_LINUX_KERNEL
endmenu

View File

@@ -0,0 +1,29 @@
menu "Linux Kernel Tools"
config BR2_LINUX_KERNEL_TOOL_CPUPOWER
bool "cpupower"
depends on !BR2_bfin # pciutils
select BR2_PACKAGE_PCIUTILS
help
cpupower is a collection of tools to examine and tune power
saving related features of your processor.
config BR2_LINUX_KERNEL_TOOL_PERF
bool "perf"
help
perf (sometimes "Perf Events" or perf tools, originally
"Performance Counters for Linux") - is a performance
analyzing tool in Linux, available from kernel version
2.6.31. User-space controlling utility, called 'perf' has
git-like interface with subcommands. It is capable of
statistical profiling of entire system (both kernel and user
code), single CPU or severals threads.
This will build and install the userspace 'perf'
command. It is up to the user to ensure that the kernel
configuration has all the suitable options enabled to allow a
proper operation of 'perf'.
https://perf.wiki.kernel.org/
endmenu

View File

@@ -0,0 +1,22 @@
################################################################################
# Linux fbtft extensions
#
# Patch the linux kernel with fbtft extension
################################################################################
LINUX_EXTENSIONS += fbtft
# for linux >= 3.15 install to drivers/video/fbdev/fbtft
# for linux < 3.15 install to drivers/video/fbtft
define FBTFT_PREPARE_KERNEL
if [ -e $(LINUX_DIR)/drivers/video/fbdev ]; then \
dest=drivers/video/fbdev ; \
else \
dest=drivers/video ; \
fi ; \
mkdir -p $(LINUX_DIR)/$${dest}/fbtft; \
cp -dpfr $(FBTFT_DIR)/* $(LINUX_DIR)/$${dest}/fbtft/ ; \
echo "source \"$${dest}/fbtft/Kconfig\"" \
>> $(LINUX_DIR)/$${dest}/Kconfig ; \
echo 'obj-y += fbtft/' >> $(LINUX_DIR)/$${dest}/Makefile
endef

View File

@@ -0,0 +1,30 @@
################################################################################
# Linux RTAI extensions
#
# Patch the linux kernel with RTAI extension
################################################################################
LINUX_EXTENSIONS += rtai
ifeq ($(KERNEL_ARCH),i386)
RTAI_ARCH = x86
else ifeq ($(KERNEL_ARCH),x86_64)
RTAI_ARCH = x86
else ifeq ($(KERNEL_ARCH),powerpc)
RTAI_ARCH = ppc
else
RTAI_ARCH = $(KERNEL_ARCH)
endif
# Prepare kernel patch
define RTAI_PREPARE_KERNEL
kver=`$(MAKE) $(LINUX_MAKE_FLAGS) -C $(LINUX_DIR) --no-print-directory -s kernelversion` ; \
if test -f $(RTAI_DIR)/base/arch/$(RTAI_ARCH)/patches/hal-linux-$${kver}-*patch ; then \
$(APPLY_PATCHES) $(LINUX_DIR) \
$(RTAI_DIR)/base/arch/$(RTAI_ARCH)/patches/ \
hal-linux-$${kver}-*patch ; \
else \
echo "No RTAI patch for your kernel version" ; \
exit 1 ; \
fi
endef

View File

@@ -0,0 +1,24 @@
################################################################################
# Linux Adeos/Xenomai extensions
#
# Patch the linux kernel with xenomai extension
################################################################################
LINUX_EXTENSIONS += xenomai
# Adeos patch version
XENOMAI_ADEOS_PATCH = $(call qstrip,$(BR2_LINUX_KERNEL_EXT_XENOMAI_ADEOS_PATCH))
ifeq ($(XENOMAI_ADEOS_PATCH),)
XENOMAI_ADEOS_OPTS = --default
else
XENOMAI_ADEOS_OPTS = --adeos=$(XENOMAI_ADEOS_PATCH)
endif
# Prepare kernel patch
define XENOMAI_PREPARE_KERNEL
$(XENOMAI_DIR)/scripts/prepare-kernel.sh \
--linux=$(LINUX_DIR) \
--arch=$(KERNEL_ARCH) \
$(XENOMAI_ADEOS_OPTS) \
--verbose
endef

View File

@@ -0,0 +1,39 @@
################################################################################
#
# cpupower
#
################################################################################
LINUX_TOOLS += cpupower
CPUPOWER_DEPENDENCIES = pciutils
CPUPOWER_MAKE_OPTS = CROSS=$(TARGET_CROSS) \
CPUFREQ_BENCH=false \
DEBUG=false
define CPUPOWER_BUILD_CMDS
$(Q)if test ! -f $(@D)/tools/power/cpupower/Makefile ; then \
echo "Your kernel version is too old and does not have the cpupower tool." ; \
echo "At least kernel 3.4 must be used." ; \
exit 1 ; \
fi
$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/tools \
$(CPUPOWER_MAKE_OPTS) \
cpupower
endef
define CPUPOWER_INSTALL_STAGING_CMDS
$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/tools \
$(CPUPOWER_MAKE_OPTS) \
DESTDIR=$(STAGING_DIR) \
cpupower_install
endef
define CPUPOWER_INSTALL_TARGET_CMDS
$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/tools \
$(CPUPOWER_MAKE_OPTS) \
DESTDIR=$(TARGET_DIR) \
cpupower_install
endef

View File

@@ -0,0 +1,88 @@
################################################################################
#
# perf
#
################################################################################
LINUX_TOOLS += perf
PERF_DEPENDENCIES = host-flex host-bison
ifeq ($(KERNEL_ARCH),x86_64)
PERF_ARCH=x86
else
PERF_ARCH=$(KERNEL_ARCH)
endif
PERF_MAKE_FLAGS = \
$(LINUX_MAKE_FLAGS) \
ARCH=$(PERF_ARCH) \
NO_LIBAUDIT=1 \
NO_NEWT=1 \
NO_GTK2=1 \
NO_LIBPERL=1 \
NO_LIBPYTHON=1 \
DESTDIR=$(TARGET_DIR) \
prefix=/usr \
WERROR=0 \
ASCIIDOC=
# The call to backtrace() function fails for ARC, because for some
# reason the unwinder from libgcc returns early. Thus the usage of
# backtrace() should be disabled in perf explicitly: at build time
# backtrace() appears to be available, but it fails at runtime: the
# backtrace will contain only several functions from the top of stack,
# instead of the complete backtrace.
ifeq ($(BR2_arc),y)
PERF_MAKE_FLAGS += NO_BACKTRACE=1
endif
ifeq ($(BR2_PACKAGE_SLANG),y)
PERF_DEPENDENCIES += slang
endif
ifeq ($(BR2_PACKAGE_LIBUNWIND),y)
PERF_DEPENDENCIES += libunwind
endif
ifeq ($(BR2_PACKAGE_NUMACTL),y)
PERF_DEPENDENCIES += numactl
endif
ifeq ($(BR2_PACKAGE_ELFUTILS),y)
PERF_DEPENDENCIES += elfutils
else
PERF_MAKE_FLAGS += NO_LIBELF=1 NO_DWARF=1
endif
# O must be redefined here to overwrite the one used by Buildroot for
# out of tree build. We build perf in $(@D)/tools/perf/ and not just
# $(@D) so that it isn't built in the root directory of the kernel
# sources.
define PERF_BUILD_CMDS
$(Q)if test ! -f $(@D)/tools/perf/Makefile ; then \
echo "Your kernel version is too old and does not have the perf tool." ; \
echo "At least kernel 2.6.31 must be used." ; \
exit 1 ; \
fi
$(Q)if test "$(BR2_PACKAGE_ELFUTILS)" = "" ; then \
if ! grep -q NO_LIBELF $(@D)/tools/perf/Makefile* ; then \
if ! test -r $(@D)/tools/perf/config/Makefile ; then \
echo "The perf tool in your kernel cannot be built without libelf." ; \
echo "Either upgrade your kernel to >= 3.7, or enable the elfutils package." ; \
exit 1 ; \
fi \
fi \
fi
$(TARGET_MAKE_ENV) $(MAKE1) $(PERF_MAKE_FLAGS) \
-C $(@D)/tools/perf O=$(@D)/tools/perf/
endef
# After installation, we remove the Perl and Python scripts from the
# target.
define PERF_INSTALL_TARGET_CMDS
$(TARGET_MAKE_ENV) $(MAKE1) $(PERF_MAKE_FLAGS) \
-C $(@D)/tools/perf O=$(@D)/tools/perf/ install
$(RM) -rf $(TARGET_DIR)/usr/libexec/perf-core/scripts/
$(RM) -rf $(TARGET_DIR)/usr/libexec/perf-core/tests/
endef

View File

@@ -0,0 +1,455 @@
################################################################################
#
# Linux kernel target
#
################################################################################
LINUX_VERSION = $(call qstrip,$(BR2_LINUX_KERNEL_VERSION))
LINUX_LICENSE = GPLv2
LINUX_LICENSE_FILES = COPYING
# Compute LINUX_SOURCE and LINUX_SITE from the configuration
ifeq ($(BR2_LINUX_KERNEL_CUSTOM_TARBALL),y)
LINUX_TARBALL = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION))
LINUX_SITE = $(patsubst %/,%,$(dir $(LINUX_TARBALL)))
LINUX_SOURCE = $(notdir $(LINUX_TARBALL))
BR_NO_CHECK_HASH_FOR += $(LINUX_SOURCE)
else ifeq ($(BR2_LINUX_KERNEL_CUSTOM_LOCAL),y)
LINUX_SITE = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_LOCAL_PATH))
LINUX_SITE_METHOD = local
else ifeq ($(BR2_LINUX_KERNEL_CUSTOM_GIT),y)
LINUX_SITE = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_REPO_URL))
LINUX_SITE_METHOD = git
else ifeq ($(BR2_LINUX_KERNEL_CUSTOM_HG),y)
LINUX_SITE = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_REPO_URL))
LINUX_SITE_METHOD = hg
else
LINUX_SOURCE = linux-$(LINUX_VERSION).tar.xz
ifeq ($(BR2_LINUX_KERNEL_CUSTOM_VERSION),y)
BR_NO_CHECK_HASH_FOR += $(LINUX_SOURCE)
endif
# In X.Y.Z, get X and Y. We replace dots and dashes by spaces in order
# to use the $(word) function. We support versions such as 4.0, 3.1,
# 2.6.32, 2.6.32-rc1, 3.0-rc6, etc.
ifeq ($(findstring x2.6.,x$(LINUX_VERSION)),x2.6.)
LINUX_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/v2.6
else ifeq ($(findstring x3.,x$(LINUX_VERSION)),x3.)
LINUX_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/v3.x
else ifeq ($(findstring x4.,x$(LINUX_VERSION)),x4.)
LINUX_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/v4.x
endif
# release candidates are in testing/ subdir
ifneq ($(findstring -rc,$(LINUX_VERSION)),)
LINUX_SITE := $(LINUX_SITE)/testing
endif # -rc
endif
LINUX_PATCHES = $(call qstrip,$(BR2_LINUX_KERNEL_PATCH))
# We rely on the generic package infrastructure to download and apply
# remote patches (downloaded from ftp, http or https). For local
# patches, we can't rely on that infrastructure, because there might
# be directories in the patch list (unlike for other packages).
LINUX_PATCH = $(filter ftp://% http://% https://%,$(LINUX_PATCHES))
LINUX_INSTALL_IMAGES = YES
LINUX_DEPENDENCIES += host-kmod
# host tools needed for kernel compression
ifeq ($(BR2_LINUX_KERNEL_LZ4),y)
LINUX_DEPENDENCIES += host-lz4
else ifeq ($(BR2_LINUX_KERNEL_LZMA),y)
LINUX_DEPENDENCIES += host-lzma
else ifeq ($(BR2_LINUX_KERNEL_LZO),y)
LINUX_DEPENDENCIES += host-lzop
else ifeq ($(BR2_LINUX_KERNEL_XZ),y)
LINUX_DEPENDENCIES += host-xz
endif
LINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_GZIP) = CONFIG_KERNEL_GZIP
LINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_LZ4) = CONFIG_KERNEL_LZ4
LINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_LZMA) = CONFIG_KERNEL_LZMA
LINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_LZO) = CONFIG_KERNEL_LZO
LINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_XZ) = CONFIG_KERNEL_XZ
ifeq ($(BR2_LINUX_KERNEL_UBOOT_IMAGE),y)
LINUX_DEPENDENCIES += host-uboot-tools
endif
LINUX_MAKE_FLAGS = \
HOSTCC="$(HOSTCC)" \
HOSTCFLAGS="$(HOSTCFLAGS)" \
ARCH=$(KERNEL_ARCH) \
INSTALL_MOD_PATH=$(TARGET_DIR) \
CROSS_COMPILE="$(TARGET_CROSS)" \
DEPMOD=$(HOST_DIR)/sbin/depmod
LINUX_MAKE_ENV = \
$(TARGET_MAKE_ENV) \
BR_BINARIES_DIR=$(BINARIES_DIR)
# Get the real Linux version, which tells us where kernel modules are
# going to be installed in the target filesystem.
LINUX_VERSION_PROBED = `$(MAKE) $(LINUX_MAKE_FLAGS) -C $(LINUX_DIR) --no-print-directory -s kernelrelease 2>/dev/null`
ifeq ($(BR2_LINUX_KERNEL_USE_INTREE_DTS),y)
KERNEL_DTS_NAME = $(call qstrip,$(BR2_LINUX_KERNEL_INTREE_DTS_NAME))
else ifeq ($(BR2_LINUX_KERNEL_USE_CUSTOM_DTS),y)
# We keep only the .dts files, so that the user can specify both .dts
# and .dtsi files in BR2_LINUX_KERNEL_CUSTOM_DTS_PATH. Both will be
# copied to arch/<arch>/boot/dts, but only the .dts files will
# actually be generated as .dtb.
KERNEL_DTS_NAME = $(basename $(filter %.dts,$(notdir $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_DTS_PATH)))))
endif
KERNEL_DTBS = $(addsuffix .dtb,$(KERNEL_DTS_NAME))
ifeq ($(BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM),y)
LINUX_IMAGE_NAME = $(call qstrip,$(BR2_LINUX_KERNEL_IMAGE_NAME))
LINUX_TARGET_NAME = $(call qstrip,$(BR2_LINUX_KERNEL_IMAGE_TARGET_NAME))
ifeq ($(LINUX_IMAGE_NAME),)
LINUX_IMAGE_NAME = $(LINUX_TARGET_NAME)
endif
else
ifeq ($(BR2_LINUX_KERNEL_UIMAGE),y)
LINUX_IMAGE_NAME = uImage
else ifeq ($(BR2_LINUX_KERNEL_APPENDED_UIMAGE),y)
LINUX_IMAGE_NAME = uImage
else ifeq ($(BR2_LINUX_KERNEL_BZIMAGE),y)
LINUX_IMAGE_NAME = bzImage
else ifeq ($(BR2_LINUX_KERNEL_ZIMAGE),y)
LINUX_IMAGE_NAME = zImage
else ifeq ($(BR2_LINUX_KERNEL_ZIMAGE_EPAPR),y)
LINUX_IMAGE_NAME = zImage.epapr
else ifeq ($(BR2_LINUX_KERNEL_APPENDED_ZIMAGE),y)
LINUX_IMAGE_NAME = zImage
else ifeq ($(BR2_LINUX_KERNEL_CUIMAGE),y)
LINUX_IMAGE_NAME = cuImage.$(KERNEL_DTS_NAME)
else ifeq ($(BR2_LINUX_KERNEL_SIMPLEIMAGE),y)
LINUX_IMAGE_NAME = simpleImage.$(KERNEL_DTS_NAME)
else ifeq ($(BR2_LINUX_KERNEL_IMAGE),y)
LINUX_IMAGE_NAME = Image
else ifeq ($(BR2_LINUX_KERNEL_LINUX_BIN),y)
LINUX_IMAGE_NAME = linux.bin
else ifeq ($(BR2_LINUX_KERNEL_VMLINUX_BIN),y)
LINUX_IMAGE_NAME = vmlinux.bin
else ifeq ($(BR2_LINUX_KERNEL_VMLINUX),y)
LINUX_IMAGE_NAME = vmlinux
else ifeq ($(BR2_LINUX_KERNEL_VMLINUZ),y)
LINUX_IMAGE_NAME = vmlinuz
else ifeq ($(BR2_LINUX_KERNEL_VMLINUZ_BIN),y)
LINUX_IMAGE_NAME = vmlinuz.bin
endif
# The if-else blocks above are all the image types we know of, and all
# come from a Kconfig choice, so we know we have LINUX_IMAGE_NAME set
# to something
LINUX_TARGET_NAME = $(LINUX_IMAGE_NAME)
endif
LINUX_KERNEL_UIMAGE_LOADADDR = $(call qstrip,$(BR2_LINUX_KERNEL_UIMAGE_LOADADDR))
ifneq ($(LINUX_KERNEL_UIMAGE_LOADADDR),)
LINUX_MAKE_FLAGS += LOADADDR="$(LINUX_KERNEL_UIMAGE_LOADADDR)"
endif
# Compute the arch path, since i386 and x86_64 are in arch/x86 and not
# in arch/$(KERNEL_ARCH). Even if the kernel creates symbolic links
# for bzImage, arch/i386 and arch/x86_64 do not exist when copying the
# defconfig file.
ifeq ($(KERNEL_ARCH),i386)
KERNEL_ARCH_PATH = $(LINUX_DIR)/arch/x86
else ifeq ($(KERNEL_ARCH),x86_64)
KERNEL_ARCH_PATH = $(LINUX_DIR)/arch/x86
else
KERNEL_ARCH_PATH = $(LINUX_DIR)/arch/$(KERNEL_ARCH)
endif
ifeq ($(BR2_LINUX_KERNEL_VMLINUX),y)
LINUX_IMAGE_PATH = $(LINUX_DIR)/$(LINUX_IMAGE_NAME)
else ifeq ($(BR2_LINUX_KERNEL_VMLINUZ),y)
LINUX_IMAGE_PATH = $(LINUX_DIR)/$(LINUX_IMAGE_NAME)
else ifeq ($(BR2_LINUX_KERNEL_VMLINUZ_BIN),y)
LINUX_IMAGE_PATH = $(LINUX_DIR)/$(LINUX_IMAGE_NAME)
else
LINUX_IMAGE_PATH = $(KERNEL_ARCH_PATH)/boot/$(LINUX_IMAGE_NAME)
endif # BR2_LINUX_KERNEL_VMLINUX
define LINUX_APPLY_LOCAL_PATCHES
for p in $(filter-out ftp://% http://% https://%,$(LINUX_PATCHES)) ; do \
if test -d $$p ; then \
$(APPLY_PATCHES) $(@D) $$p \*.patch || exit 1 ; \
else \
$(APPLY_PATCHES) $(@D) `dirname $$p` `basename $$p` || exit 1; \
fi \
done
endef
LINUX_POST_PATCH_HOOKS += LINUX_APPLY_LOCAL_PATCHES
# Older linux kernels use deprecated perl constructs in timeconst.pl
# that were removed for perl 5.22+ so it breaks on newer distributions
# Try a dry-run patch to see if this applies, if it does go ahead
define LINUX_TRY_PATCH_TIMECONST
@if patch -p1 --dry-run -f -s -d $(@D) <$(LINUX_PKGDIR)/0001-timeconst.pl-Eliminate-Perl-warning.patch.conditional >/dev/null ; then \
$(APPLY_PATCHES) $(@D) $(LINUX_PKGDIR) 0001-timeconst.pl-Eliminate-Perl-warning.patch.conditional ; \
fi
endef
LINUX_POST_PATCH_HOOKS += LINUX_TRY_PATCH_TIMECONST
ifeq ($(BR2_LINUX_KERNEL_USE_DEFCONFIG),y)
LINUX_KCONFIG_DEFCONFIG = $(call qstrip,$(BR2_LINUX_KERNEL_DEFCONFIG))_defconfig
else ifeq ($(BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG),y)
LINUX_KCONFIG_FILE = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE))
endif
LINUX_KCONFIG_FRAGMENT_FILES = $(call qstrip,$(BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES))
LINUX_KCONFIG_EDITORS = menuconfig xconfig gconfig nconfig
LINUX_KCONFIG_OPTS = $(LINUX_MAKE_FLAGS)
# If no package has yet set it, set it from the Kconfig option
LINUX_NEEDS_MODULES ?= $(BR2_LINUX_NEEDS_MODULES)
define LINUX_KCONFIG_FIXUP_CMDS
$(if $(LINUX_NEEDS_MODULES),
$(call KCONFIG_ENABLE_OPT,CONFIG_MODULES,$(@D)/.config))
$(call KCONFIG_ENABLE_OPT,$(LINUX_COMPRESSION_OPT_y),$(@D)/.config)
$(foreach opt, $(LINUX_COMPRESSION_OPT_),
$(call KCONFIG_DISABLE_OPT,$(opt),$(@D)/.config)
)
$(if $(BR2_arm)$(BR2_armeb),
$(call KCONFIG_ENABLE_OPT,CONFIG_AEABI,$(@D)/.config))
$(if $(BR2_TARGET_ROOTFS_CPIO),
$(call KCONFIG_ENABLE_OPT,CONFIG_BLK_DEV_INITRD,$(@D)/.config))
# As the kernel gets compiled before root filesystems are
# built, we create a fake cpio file. It'll be
# replaced later by the real cpio archive, and the kernel will be
# rebuilt using the linux-rebuild-with-initramfs target.
$(if $(BR2_TARGET_ROOTFS_INITRAMFS),
touch $(BINARIES_DIR)/rootfs.cpio
$(call KCONFIG_SET_OPT,CONFIG_INITRAMFS_SOURCE,"$${BR_BINARIES_DIR}/rootfs.cpio",$(@D)/.config)
$(call KCONFIG_SET_OPT,CONFIG_INITRAMFS_ROOT_UID,0,$(@D)/.config)
$(call KCONFIG_SET_OPT,CONFIG_INITRAMFS_ROOT_GID,0,$(@D)/.config))
$(if $(BR2_ROOTFS_DEVICE_CREATION_STATIC),,
$(call KCONFIG_ENABLE_OPT,CONFIG_DEVTMPFS,$(@D)/.config)
$(call KCONFIG_ENABLE_OPT,CONFIG_DEVTMPFS_MOUNT,$(@D)/.config))
$(if $(BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV),
$(call KCONFIG_ENABLE_OPT,CONFIG_INOTIFY_USER,$(@D)/.config))
$(if $(BR2_PACKAGE_KTAP),
$(call KCONFIG_ENABLE_OPT,CONFIG_DEBUG_FS,$(@D)/.config)
$(call KCONFIG_ENABLE_OPT,CONFIG_ENABLE_DEFAULT_TRACERS,$(@D)/.config)
$(call KCONFIG_ENABLE_OPT,CONFIG_PERF_EVENTS,$(@D)/.config)
$(call KCONFIG_ENABLE_OPT,CONFIG_FUNCTION_TRACER,$(@D)/.config))
$(if $(BR2_PACKAGE_SYSTEMD),
$(call KCONFIG_ENABLE_OPT,CONFIG_CGROUPS,$(@D)/.config)
$(call KCONFIG_ENABLE_OPT,CONFIG_INOTIFY_USER,$(@D)/.config)
$(call KCONFIG_ENABLE_OPT,CONFIG_FHANDLE,$(@D)/.config)
$(call KCONFIG_ENABLE_OPT,CONFIG_AUTOFS4_FS,$(@D)/.config)
$(call KCONFIG_ENABLE_OPT,CONFIG_TMPFS_POSIX_ACL,$(@D)/.config)
$(call KCONFIG_ENABLE_OPT,CONFIG_TMPFS_POSIX_XATTR,$(@D)/.config))
$(if $(BR2_PACKAGE_SMACK),
$(call KCONFIG_ENABLE_OPT,CONFIG_SECURITY,$(@D)/.config)
$(call KCONFIG_ENABLE_OPT,CONFIG_SECURITY_SMACK,$(@D)/.config)
$(call KCONFIG_ENABLE_OPT,CONFIG_SECURITY_NETWORK,$(@D)/.config))
$(if $(BR2_PACKAGE_IPTABLES),
$(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_IPTABLES,$(@D)/.config)
$(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_FILTER,$(@D)/.config)
$(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER,$(@D)/.config)
$(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER_XTABLES,$(@D)/.config))
$(if $(BR2_PACKAGE_XTABLES_ADDONS),
$(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER_ADVANCED,$(@D)/.config)
$(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK,$(@D)/.config)
$(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK_MARK,$(@D)/.config))
$(if $(BR2_LINUX_KERNEL_APPENDED_DTB),
$(call KCONFIG_ENABLE_OPT,CONFIG_ARM_APPENDED_DTB,$(@D)/.config))
$(if $(BR2_PACKAGE_KERNEL_MODULE_IMX_GPU_VIV),
$(call KCONFIG_DISABLE_OPT,CONFIG_MXC_GPU_VIV,$(@D)/.config))
endef
ifeq ($(BR2_LINUX_KERNEL_DTS_SUPPORT),y)
ifeq ($(BR2_LINUX_KERNEL_DTB_IS_SELF_BUILT),)
define LINUX_BUILD_DTB
$(LINUX_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) $(KERNEL_DTBS)
endef
ifeq ($(BR2_LINUX_KERNEL_APPENDED_DTB),)
define LINUX_INSTALL_DTB
# dtbs moved from arch/<ARCH>/boot to arch/<ARCH>/boot/dts since 3.8-rc1
cp $(addprefix \
$(KERNEL_ARCH_PATH)/boot/$(if $(wildcard \
$(addprefix $(KERNEL_ARCH_PATH)/boot/dts/,$(KERNEL_DTBS))),dts/),$(KERNEL_DTBS)) \
$(1)
endef
endif # BR2_LINUX_KERNEL_APPENDED_DTB
endif # BR2_LINUX_KERNEL_DTB_IS_SELF_BUILT
endif # BR2_LINUX_KERNEL_DTS_SUPPORT
ifeq ($(BR2_LINUX_KERNEL_APPENDED_DTB),y)
# dtbs moved from arch/$ARCH/boot to arch/$ARCH/boot/dts since 3.8-rc1
define LINUX_APPEND_DTB
(cd $(KERNEL_ARCH_PATH)/boot; \
for dtb in $(KERNEL_DTS_NAME); do \
if test -e $${dtb}.dtb ; then \
dtbpath=$${dtb}.dtb ; \
else \
dtbpath=dts/$${dtb}.dtb ; \
fi ; \
cat zImage $${dtbpath} > zImage.$${dtb} || exit 1; \
done)
endef
ifeq ($(BR2_LINUX_KERNEL_APPENDED_UIMAGE),y)
# We need to generate a new u-boot image that takes into
# account the extra-size added by the device tree at the end
# of the image. To do so, we first need to retrieve both load
# address and entry point for the kernel from the already
# generate uboot image before using mkimage -l.
LINUX_APPEND_DTB += ; \
MKIMAGE_ARGS=`$(MKIMAGE) -l $(LINUX_IMAGE_PATH) |\
sed -n -e 's/Image Name:[ ]*\(.*\)/-n \1/p' -e 's/Load Address:/-a/p' -e 's/Entry Point:/-e/p'`; \
for dtb in $(KERNEL_DTS_NAME); do \
$(MKIMAGE) -A $(MKIMAGE_ARCH) -O linux \
-T kernel -C none $${MKIMAGE_ARGS} \
-d $(KERNEL_ARCH_PATH)/boot/zImage.$${dtb} $(LINUX_IMAGE_PATH).$${dtb}; \
done
endif
endif
# Compilation. We make sure the kernel gets rebuilt when the
# configuration has changed.
define LINUX_BUILD_CMDS
$(if $(BR2_LINUX_KERNEL_USE_CUSTOM_DTS),
cp -f $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_DTS_PATH)) $(KERNEL_ARCH_PATH)/boot/dts/)
$(LINUX_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) $(LINUX_TARGET_NAME)
@if grep -q "CONFIG_MODULES=y" $(@D)/.config; then \
$(LINUX_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) modules ; \
fi
$(LINUX_BUILD_DTB)
$(LINUX_APPEND_DTB)
endef
ifeq ($(BR2_LINUX_KERNEL_APPENDED_DTB),y)
# When a DTB was appended, install the potential several images with
# appended DTBs.
define LINUX_INSTALL_IMAGE
mkdir -p $(1)
cp $(KERNEL_ARCH_PATH)/boot/$(LINUX_IMAGE_NAME).* $(1)
endef
else
# Otherwise, just install the unique image generated by the kernel
# build process.
define LINUX_INSTALL_IMAGE
$(INSTALL) -m 0644 -D $(LINUX_IMAGE_PATH) $(1)/$(LINUX_IMAGE_NAME)
endef
endif
ifeq ($(BR2_LINUX_KERNEL_INSTALL_TARGET),y)
define LINUX_INSTALL_KERNEL_IMAGE_TO_TARGET
$(call LINUX_INSTALL_IMAGE,$(TARGET_DIR)/boot)
$(call LINUX_INSTALL_DTB,$(TARGET_DIR)/boot)
endef
endif
define LINUX_INSTALL_HOST_TOOLS
# Installing dtc (device tree compiler) as host tool, if selected
if grep -q "CONFIG_DTC=y" $(@D)/.config; then \
$(INSTALL) -D -m 0755 $(@D)/scripts/dtc/dtc $(HOST_DIR)/usr/bin/linux-dtc ; \
fi
endef
define LINUX_INSTALL_IMAGES_CMDS
$(call LINUX_INSTALL_IMAGE,$(BINARIES_DIR))
$(call LINUX_INSTALL_DTB,$(BINARIES_DIR))
endef
define LINUX_INSTALL_TARGET_CMDS
$(LINUX_INSTALL_KERNEL_IMAGE_TO_TARGET)
# Install modules and remove symbolic links pointing to build
# directories, not relevant on the target
@if grep -q "CONFIG_MODULES=y" $(@D)/.config; then \
$(LINUX_MAKE_ENV) $(MAKE1) $(LINUX_MAKE_FLAGS) -C $(@D) modules_install; \
rm -f $(TARGET_DIR)/lib/modules/$(LINUX_VERSION_PROBED)/build ; \
rm -f $(TARGET_DIR)/lib/modules/$(LINUX_VERSION_PROBED)/source ; \
fi
$(LINUX_INSTALL_HOST_TOOLS)
endef
# Include all our extensions and tools definitions.
#
# Note: our package infrastructure uses the full-path of the last-scanned
# Makefile to determine what package we're currently defining, using the
# last directory component in the path. As such, including other Makefile,
# like below, before we call one of the *-package macro is usally not
# working.
# However, since the files we include here are in the same directory as
# the current Makefile, we are OK. But this is a hard requirement: files
# included here *must* be in the same directory!
include $(sort $(wildcard linux/linux-ext-*.mk))
include $(sort $(wildcard linux/linux-tool-*.mk))
LINUX_PATCH_DEPENDENCIES += $(foreach ext,$(LINUX_EXTENSIONS),\
$(if $(BR2_LINUX_KERNEL_EXT_$(call UPPERCASE,$(ext))),$(ext)))
LINUX_PRE_PATCH_HOOKS += $(foreach ext,$(LINUX_EXTENSIONS),\
$(if $(BR2_LINUX_KERNEL_EXT_$(call UPPERCASE,$(ext))),\
$(call UPPERCASE,$(ext))_PREPARE_KERNEL))
# Install Linux kernel tools in the staging directory since some tools
# may install shared libraries and headers (e.g. cpupower). The kernel
# image is NOT installed in the staging directory.
LINUX_INSTALL_STAGING = YES
LINUX_DEPENDENCIES += $(foreach tool,$(LINUX_TOOLS),\
$(if $(BR2_LINUX_KERNEL_TOOL_$(call UPPERCASE,$(tool))),\
$($(call UPPERCASE,$(tool))_DEPENDENCIES)))
LINUX_POST_BUILD_HOOKS += $(foreach tool,$(LINUX_TOOLS),\
$(if $(BR2_LINUX_KERNEL_TOOL_$(call UPPERCASE,$(tool))),\
$(call UPPERCASE,$(tool))_BUILD_CMDS))
LINUX_POST_INSTALL_STAGING_HOOKS += $(foreach tool,$(LINUX_TOOLS),\
$(if $(BR2_LINUX_KERNEL_TOOL_$(call UPPERCASE,$(tool))),\
$(call UPPERCASE,$(tool))_INSTALL_STAGING_CMDS))
LINUX_POST_INSTALL_TARGET_HOOKS += $(foreach tool,$(LINUX_TOOLS),\
$(if $(BR2_LINUX_KERNEL_TOOL_$(call UPPERCASE,$(tool))),\
$(call UPPERCASE,$(tool))_INSTALL_TARGET_CMDS))
# Checks to give errors that the user can understand
ifeq ($(BR_BUILDING),y)
ifeq ($(BR2_LINUX_KERNEL_USE_DEFCONFIG),y)
# We must use the user-supplied kconfig value, because
# LINUX_KCONFIG_DEFCONFIG will at least contain the
# trailing _defconfig
ifeq ($(call qstrip,$(BR2_LINUX_KERNEL_DEFCONFIG)),)
$(error No kernel defconfig name specified, check your BR2_LINUX_KERNEL_DEFCONFIG setting)
endif
endif
ifeq ($(BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG),y)
ifeq ($(LINUX_KCONFIG_FILE),)
$(error No kernel configuration file specified, check your BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE setting)
endif
endif
ifeq ($(BR2_LINUX_KERNEL_DTS_SUPPORT)$(KERNEL_DTS_NAME),y)
$(error No kernel device tree source specified, check your \
BR2_LINUX_KERNEL_USE_INTREE_DTS / BR2_LINUX_KERNEL_USE_CUSTOM_DTS settings)
endif
endif # BR_BUILDING
$(eval $(kconfig-package))
# Support for rebuilding the kernel after the cpio archive has
# been generated in $(BINARIES_DIR)/rootfs.cpio.
$(LINUX_DIR)/.stamp_initramfs_rebuilt: $(LINUX_DIR)/.stamp_target_installed $(LINUX_DIR)/.stamp_images_installed $(BINARIES_DIR)/rootfs.cpio
@$(call MESSAGE,"Rebuilding kernel with initramfs")
# Build the kernel.
$(LINUX_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) $(LINUX_TARGET_NAME)
$(LINUX_APPEND_DTB)
# Copy the kernel image to its final destination
cp $(LINUX_IMAGE_PATH) $(BINARIES_DIR)
# If there is a .ub file copy it to the final destination
test ! -f $(LINUX_IMAGE_PATH).ub || cp $(LINUX_IMAGE_PATH).ub $(BINARIES_DIR)
$(Q)touch $@
# The initramfs building code must make sure this target gets called
# after it generated the initramfs list of files.
linux-rebuild-with-initramfs: $(LINUX_DIR)/.stamp_initramfs_rebuilt