aboutsummaryrefslogtreecommitdiff
path: root/linux/linux.mk
Commit message (Collapse)AuthorAgeFilesLines
* linux: don't override HOSTCC for kconfigGravatar Arnout Vandecappelle (Essensium/Mind)2018-05-171-1/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Kconfig uses either pkg-config or hard-coded /usr/include paths to find the ncurses or ncursesw library. If ncursesw is found, it will include <ncursesw.h>. Since Buildroot's host-ncurses doesn't install a .pc file, and linux.mk anyway doesn't pass the pkg-config options to find the host pkg-config files, Kconfig will always find the system's ncursesw.h. However, since commit dde090c299 (linux: fix passing of host CFLAGS and LDFLAGS) HOST_LDFLAGS is passed to the linux build system. Thus, if host-ncurses was already built before 'make linux-menuconfig' is called, the build will pick up libncurses from the host directory, which is NOT widechar. Thus, two different ncurses configurations are mixed into the final mconf program. This will result in serious breakage in the rendering of the menus (lots of @ and question mark characters). As a workaround (suggested by Yann), don't pass HOST_CFLAGS and HOST_LDFLAGS when running kconfig commands. For kconfig, we should never need host packages anyway. This way, the kconfig calls will always use the system's ncurses and never our host-ncurses. Note that the same problem could pop up for other kconfig packages as well if we ever pass HOST_CFLAGS/HOST_LDFLAGS to them. We could force HOSTCC=$(HOSTCC) directly in kconfig-package. However, for now there are no other packages that exhibit this problem, so this can be revisited when they do. Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Cc: David De Grave <david.degrave@essensium.com> Cc: Scott Fan <fancp2007@gmail.com> Cc: Yann E. MORIN <yann.morin.1998@free.fr> Tested-by: Matt Weber <matthew.weber@rockwellcollins.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
* linux: ensure correct make targets are used for cuImage/simpleImage.<dtb>Gravatar Peter Korsgaard2018-05-061-2/+2
| | | | | | | | | | | | Fixes https://gitlab.com/buildroot.org/buildroot/-/jobs/66561794 LINUX_DTS_NAME may end up with a leading space because of the += logic, and may contain multiple dts files - Neither of which works when we construct the {cu,simple}Image.$(LINUX_DTS_NAME) make target name. Fix it by using the first word in the variable. Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* linux: bump default to version 4.16Gravatar Bernd Kuhls2018-04-091-1/+1
| | | | | | | | | | | | | Added host-bison and host-flex as dependencies after upstream removed pre-generated files and switched over to build-time generation, for details see: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=033dba2ec06c47a9fe1b190bc3281058fb20738d https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=29c833061c1d8c2d1d23a62e7061561eadd76cdb Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de> Tested-by: Luca Ceresoli <luca@lucaceresoli.net> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
* linux/linux.mk: use namespace for internal variablesGravatar Ricardo Martincoski2018-04-011-19/+19
| | | | | | | | | | | | | These three symbols: KERNEL_ARCH_PATH KERNEL_DTBS KERNEL_DTS_NAME are defined and used only inside this file, so use the LINUX_ namespace for them instead of KERNEL_. Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com> Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
* linux/linux*.mk: fix code styleGravatar Ricardo Martincoski2018-04-011-13/+12
| | | | | | | | | Use only one space before backslash. Remove consecutive empty line. Indent with tabs. Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
* package/linux: fix custom dts files handlingGravatar Rafal Susz2018-03-311-4/+5
| | | | | | | | | | | Custom dts files are still conditionally copied based on non existing boolean. So it is currently not possible to use custom dts file(s) at all. List of dts files is now iterated and files are copied into dedicated kernel arch dir. Signed-off-by: Rafal Susz <rafal.susz@gmail.com> Tested-by: Jan Kundrát <jan.kundrat@cesnet.cz> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* package/linux: drop useless intermediate DTS booleansGravatar Yann E. MORIN2018-03-081-4/+0
| | | | | | | | | | | | | | | Just use whatever the user specified in the list. An empty list means no DTS was specified. No need to add legacy option, as the behaviour does not change. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Simon van der Veldt <simon.vanderveldt@gmail.com> Cc: Arnout Vandecappelle <arnout@mind.be> Cc: Peter Korsgaard <peter@korsgaard.com> Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Tested-by: Joshua Henderson <joshua.henderson@microchip.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* linux: add BR2_LINUX_KERNEL_NEEDS_HOST_LIBELFGravatar Thomas Petazzoni2018-03-061-0/+4
| | | | | | | | | | | | | | | Some Linux kernel configuration options (such as CONFIG_UNWINDER_ORC) require building a host program that needs libelf. Users who have libelf installed on their system won't see a problem, but users who don't have libelf installed will get a build failure. Therefore, this commit adds an option that allows a user to indicate that his Linux kernel configuration requires libelf. When this option is enabled, we add host-elfutils to the dependencies of the linux package (host-elfutils provides the libelf library). Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* linux: add BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSLGravatar Thomas Petazzoni2018-03-061-0/+4
| | | | | | | | | | | | | | Some Linux kernel configuration options (such as CONFIG_SYSTEM_TRUSTED_KEYRING) require building a host program called extract-cert, which itself needs OpenSSL. Users having OpenSSL installed on their system won't see a problem, but users who don't have OpenSSL installed will get a build failure. This commit adds a new option that allows users to indicate that their Linux configuration requires building host-openssl. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* linux: fix passing of host CFLAGS and LDFLAGSGravatar Thomas Petazzoni2018-03-061-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | We were passing HOSTCFLAGS="$(HOSTCFLAGS)" to Linux. However: - HOSTCFLAGS in Buildroot doesn't exist, and is empty, so this assignment never did anything. The name of the variable in Buildroot in HOST_CFLAGS. - HOSTCFLAGS in Linux isn't used everywhere, and passing it overrides the default HOSTCFLAGS value defined in the main Linux kernel Makefile. In addition, there is no way to pass additional host LDFLAGS in the Linux kernel build system. Therefore, we simply shoehorn our HOST_CFLAGS and HOST_LDFLAGS while passing HOSTCC to the Linux kernel build system. This has been tested to work fine with host OpenSSL and host libelf only available in $(HOST_DIR). Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Tested-by: Frank Hunleth <fhunleth@troodon-software.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* linux: allow both in-tree and custom dts filesGravatar Simon van der Veldt2018-02-251-3/+5
| | | | | | | | | | | For some boards, for example the Raspberry Pi, it's necessary to build in-tree dts files as well as custom/out of tree dts-files (dt-blob.bin). The existing logic made these two options exclusive, this commit changes that to allow both in-tree as well as custom sources for dts files. Signed-off-by: Simon van der Veldt <simon.vanderveldt@gmail.com> [Arnout: re-wrap help, add extra empty line, change = into +=] Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
* sunxi-mali-mainline-driver: new packageGravatar Peter Korsgaard2018-02-151-0/+3
| | | | | | | | | | | | Add allwinner mali kernel driver package. Used in combination with userspace Allwinner openGL libraries, it gives possibility to use 3D openGL SoC acceleration. [Peter: Rename to sunxi-mali-mainline-driver. Use revision selection from sunxi-mali-mainline package. Depend on that package and default to y if dependencies are met. Tweak Linux config] Signed-off-by: Giulio Benetti <giulio.benetti@micronovasrl.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* linux: meddle not in the internals of filesystemsGravatar Yann E. MORIN2017-11-301-11/+7
| | | | | | | | | | | | | | | | | | | | | | Currently, the rule to rebuild the Linux kernel with an initramfs directly depends on the path of the file of the intermediate cpio image. This is inherently "bad" from a purity point of view; linux.mk should not have to delve into the fs internals. Rather, make it directly depend on the "frontal" rule that generates the cpio image. Drop the comment for linux-rebuild-with-initramfs, it was misleading (talking about generating "the initramfs list of files", which is not what was done, since we use a cpio as source of initramfs, not a list of files). Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Cc: Arnout Vandecappelle <arnout@mind.be> Cc: Romain Naour <romain.naour@openwide.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* linux: split overly-long dependency line for readabilityGravatar Yann E. MORIN2017-11-301-1/+4
| | | | | | | | Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Cc: Arnout Vandecappelle <arnout@mind.be> Reviewed-by: Romain Naour <romain.naour@gmail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* linux: Deselect all unconfigured compression optionsGravatar Cam Hutchison2017-10-211-6/+6
| | | | | | | | | | | | | | | | | | | | | | | The LINUX_KCONFIG_FIXUP_CMDS are meant to deselect any compression option that are not selected in the buildroot configuration. But it only deselects the last one in the list instead of all of them because it overwrites the LINUX_COMPRESSION_OPT_ variable instead of appending to it. Only the last option set to that variable gets deselected. This produces the warning: .config:2216:warning: override: KERNEL_GZIP changes choice state is emitted when buildroot runs olddefconfig when buildroot configures a kernel with a custom config that has a different kernel compression option set to what is configured in buildroot. Accumulate all the deselected compression options instead of overwriting them to ensure all non-selected options get deselected.. Signed-off-by: Cam Hutchison <camh@xdna.net> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* wireguard: add new packageGravatar Aurélien Chabot2017-10-021-0/+6
| | | | | | | | [Peter: Fix help text, drop suboptions, drop patches, fix dependencies, handle optional bash dependency, use kernel-module infrastructure, enable needed kernel options] Signed-off-by: Aurélien Chabot <aurelien@chabot.fr> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* linux: Fix URL for release candidate versionsGravatar Luis Araneda2017-08-111-4/+4
| | | | | | | | | | | Starting with 4.12-rc1, tarballs are generated by cgit directly from Linus's tree. This also implies that no .tar.xz can be used for them. This method also applies to older release candidates. Signed-off-by: Luis Araneda <luaraneda@gmail.com> [Arnout: added comment in the code] Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
* linux: apply xtensa overlayGravatar Max Filippov2017-07-091-0/+8
| | | | | | | | | | Xtensa core configuration must be added to linux before it can be built for that xtensa CPU variant. Extract configuration files from the xtensa overlay as is done for other packages that need to be configured for a specific xtensa core. Signed-off-by: Max Filippov <jcmvbkbc@gmail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* Globally replace $(HOST_DIR)/usr/bin with $(HOST_DIR)/binGravatar Arnout Vandecappelle2017-07-051-3/+3
| | | | | | | | | | | Since things are no longer installed in $(HOST_DIR)/usr, the callers should also not refer to it. This is a mechanical change with git grep -l '$(HOST_DIR)/usr/bin' | xargs sed -i 's%$(HOST_DIR)/usr/bin%$(HOST_DIR)/bin%g' Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* linux: exclude from hash check except for latest versionGravatar Arnout Vandecappelle2017-06-111-4/+4
| | | | | | | | | | | | | | We don't have a hash for any linux version. We currently also don't have a hash for the latest version, but if we ever add a hash, it will only be for the latest version. This simplifies the code a little because soon we will add hash checks for git as well, so we also need an exclusion in that case. It's much easier to always exclude except in the single case where we do have a hash. Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* linux: fix name of config variableGravatar Yann E. MORIN2017-06-081-1/+1
| | | | | | | | | | | | | | | | In 4c10eedc1 (systemd: enable required kernel features), we added setting a few required kernel features to ensure systemd works. However, there was a typo for one of the variables: CONFIG_TMPFS_XATTR was written as CONFIG_TMPFS_POSIX_XATTR, which does not exist (and never ever existed, at least not since 2.6.12)... Reported-by: Michael Heinemann <posted@heine.so> Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Maxime Hadjinlian <maxime.hadjinlian@gmail.com> Cc: Eric Le Bihan <eric.le.bihan.dev@free.fr> Cc: Michael Heinemann <posted@heine.so> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* linux: select BR2_PACKAGE_HOST_UBOOT_TOOLS instead of ↵Gravatar Arnout Vandecappelle2017-04-121-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | BR2_LINUX_KERNEL_UBOOT_IMAGE A long time ago, the blind config option BR2_LINUX_KERNEL_UBOOT_IMAGE was introduced to be able to trigger the linux -> host-uboot-tools dependency. Back in those days, there was no user-configurable BR2_PACKAGE_HOST_UBOOT_TOOLS. Now, however, it is possible to select a custom kernel image name that needs uboot-tools, and manually enable BR2_PACKAGE_HOST_UBOOT_TOOLS. In this case, however, the linux -> host-uboot-tools is missed and the build is not reproducible. An example of such a situation is the upcoming CI40 defconfig. As a solution, remove BR2_LINUX_KERNEL_UBOOT_IMAGE entirely. Instead, just select BR2_PACKAGE_HOST_UBOOT_TOOLS and add the dependency if it is selected. Note that this may introduce a redundant dependency in case the user selected BR2_PACKAGE_HOST_UBOOT_TOOLS for some other reason (e.g. to be able to generate a U-Boot environment to include in the image, while the kernel is built as a zImage). However, the redundant dependency shouldn't hurt much. Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Cc: Abhimanyu Vishwakarma <abhimanyu.v@gmail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* linux: Add CIP SLTS selection optionGravatar Angelo Compagnucci2017-04-061-0/+2
| | | | | | | | | This patch adds an easy way to select the CIP project SLTS kernel within the kernel menu. Signed-off-by: Angelo Compagnucci <angelo.compagnucci@gmail.com> [Thomas: remove BR2_CIP_KERNEL_REPO_URL option.] Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* boot, linux, package: use SPDX short identifier for GPLv2/GPLv2+Gravatar Rahul Bedarkar2017-04-011-1/+1
| | | | | | | | | | | We want to use SPDX identifier for license strings as much as possible. SPDX short identifier for GPLv2/GPLv2+ is GPL-2.0/GPL-2.0+. This change is done by using following command. find . -name "*.mk" | xargs sed -ri '/LICENSE( )?[\+:]?=/s/\<GPLv2\>/GPL-2.0/g' Signed-off-by: Rahul Bedarkar <rahulbedarkar89@gmail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* arch, linux, package: remove whitespacesGravatar Bernd Kuhls2017-03-291-3/+3
| | | | | | | | | | | | Whitespaces were searched using the following regex: [ ]{1,}\t and then manually removed in most of the cases. For xserver_xorg-server.mk, tabs before backslashes were removed. Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* linux: check that a repo and version is defined when using a custom repoGravatar Christian Kellermann2016-12-171-0/+11
| | | | | | | | | | | If not set the system will use an empty string which will result in download errors for 'linux-.tar.gz' packages. This patch makes it obvious to the user that the variable needs to be set. Signed-off-by: Christian Kellermann <christian.kellermann@solectrix.de> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* linux: generate KBUILD_BUILD_TIMESTAMP date whith LC_ALL=CGravatar Jean-Baptiste Trédez2016-12-071-1/+1
| | | | | | | | | | | | | | | | | | | | | Fix kernel reproducible build if a non-C locale is used on the host system. When building the Linux kernel, scripts/gen_initramfs_list.sh does 'date -d"$KBUILD_BUILD_TIMESTAMP" +%s'. In linux.mk, Buildroot sets KBUILD_BUILD_TIMESTAMP to "$(shell date -d @$(SOURCE_DATE_EPOCH))". For example, if LANG=fr_FR.UTF-8 is defined in the host system, it does not work: - LC_ALL=C date -d"$(LC_ALL=C date)" : ok - LC_ALL=C date -d"$(LC_ALL=fr_FR.UTF-8 date)" : error LANG/LC_ALL variables exported in the main Makefiles are not passed in the $(shell ...) sub-shells. Signed-off-by: Jean-Baptiste Trédez <jean-baptiste.tredez@basystemes.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* linux: override build timestamp for reproducible buildsGravatar Gilles Chanteperdrix2016-11-231-0/+8
| | | | | | | | | | | | | | | Linux kernel include a few information about build environment in its binary. This feature is incompatible with BR2_REPRODUCIBLE. This patch overload build information when BR2_REPRODUCIBLE is enabled. Note that usage of KBUILD_BUILD_TIMESTAMP is not mandatory since Buildroot use `fakedate'. However, native solution is prefered when upstream provide one. Signed-off-by: Gilles Chanteperdrix <gilles.chanteperdrix@xenomai.org> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Jérôme Pouiller <jezz@sysmic.org> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* linux/tools: make it a real, separate packageGravatar Yann E. MORIN2016-09-221-23/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The kernel source tree also contains the sources for various userland tools, of which cpupower, perf or selftests. Currently, we have support for building those tools as part of the kernel build procedure. This looked the correct thing to do so far, because, well, they *are* part of the kernel source tree and some really have to be the same version as the kernel that will run. However, this is causing quite a non-trivial-to-break circular dependency in some configurations. For example, this defconfig fails to build (similar to the one reported by Paul): BR2_arm=y BR2_cortex_a7=y BR2_ARM_FPU_NEON_VFPV4=y BR2_TOOLCHAIN_EXTERNAL=y BR2_INIT_SYSTEMD=y BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_GIT=y BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/raspberrypi/linux.git" BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="26f3b72a9c049be10e6af196252283e1f6ab9d1f" BR2_LINUX_KERNEL_DEFCONFIG="bcm2709" BR2_PACKAGE_LINUX_TOOLS_CPUPOWER=y BR2_PACKAGE_CRYPTODEV=y BR2_PACKAGE_OPENSSL=y BR2_PACKAGE_LIBCURL=y This causes a circular dependency, as explained by Thomas: - When libcurl is enabled, systemd depends on it - When OpenSSL is enabled, obviously, will use it for SSL support - When cryptodev-linux is enabled, OpenSSL will depend on it to use crypto accelerators supported in the kernel via cryptodev-linux. - cryptodev-linux being a kernel module, it depends on linux - linux by itself (the kernel) does not depend on pciutils, but the linux tool "cpupower" (managed in linux-tool-cpupower) depends on pciutils - pciutils depends on udev when available - udev is provided by systemd. And indeed, during the build, we can see that make warns (it's only reported as a *warning*, not as an actual error): [...] make[1]: Circular /home/ymorin/dev/buildroot/O/build/openssl-1.0.2h/.stamp_configured <- cryptodev-linux dependency dropped. >>> openssl 1.0.2h Downloading [...] So the build fails later on, when openssl is actually built: eng_cryptodev.c:57:31: fatal error: crypto/cryptodev.h: No such file or directory compilation terminated. <builtin>: recipe for target 'eng_cryptodev.o' failed Furthermore, graph-depends also detects the circular dependency, but treats it as a hard-error: Recursion detected for : cryptodev-linux which is a dependency of: openssl which is a dependency of: libcurl which is a dependency of: systemd which is a dependency of: udev which is a dependency of: pciutils which is a dependency of: linux which is a dependency of: cryptodev-linux Makefile:738: recipe for target 'graph-depends' failed Of course, there is no way to break the loop without losing functionality in either one of the involved packages *and* keep our infrastructure and packages as-is. The only solution is to break the loop at the linux-tools level, by moving them away into their own package, so that the linux package will no longer have the opportunity to depend on another package via a dependency of one the tools. All three linux tools are thus moved away to their own package. The package infrastructure only knows of three types of packages: those in package/ , in boot/ , in toolchain/ and the one in linux/ . So we create that new linux-tools package in package/ so that we don't have to fiddle with yet another special case in the infra. Still, we want its configure options to appear in the kernel's sub-menu. So, we make it a prompt-less package, with only the tools visible as options of that package, but without the usual dependency on their master symbol; they only depend on the Linux kernel. Furthermore, because the kernel is such a huge pile of code, we would not be very happy to extract it a second time just for the sake of a few tools. We can't extract only the tools/ sub-directory from the kernel source either, because some tools have hard-coded path to includes from the kernel (arch and stuff). Instead, we just use the linux source tree as our own build tree, and ensure the linux tree is extracted and patched before linux-tools is configured and built. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Cc: Paul Ashford <paul.ashford@zurria.co.uk> [Thomas: - fix typo #(@D) -> $(@D) - fix the inclusion of the per-tool .mk files.] Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* linux: use INSTALL_MOD_STRIP=1 to strip modulesGravatar Alexey Brodkin2016-09-191-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We used to do a special handling of Linux kernel modules when stripping target binaries because there's some special precious data in modules that we must keep for them to properly operate. This is for example true for stack unwinding data etc. It turned out there're cases when our existing "strip --strip-unneeded" doesn't work well. For example this removes .debug_frame section used by Linux on ARC for stack unwinding, refer to [1] and [2] for more details. Now Linux kernel may strip modules as a part of "modules_install" target if INSTALL_MOD_STRIP=1 is passed in command line. And so we'll do allowing kernel decide how to strip modules in the best way. Still note as of today Linux kernel strips modules uniformly for all arches with "strip" command, so this commit alone doesn't solve mentioned problem but it opens a possibility to add later a patch to the kernel which will strip modules for ARC differently - and that's our plan for mainline kernel. [1] https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/issues/86 [2] http://lists.busybox.net/pipermail/buildroot/2016-September/172161.html Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com> Cc: Vineet Gupta <vgupta@synopsys.com> Cc: Peter Korsgaard <peter@korsgaard.com> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Cc: Daniel Mentz <danielmentz@google.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* Revert "Added local directory as source of kernel code"Gravatar Yann E. MORIN2016-08-281-3/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 73da2ff6f718f2889e3c5024d899f8d58f502863. The reason for adding support for a local location was to be able to do development on the Linux kernel source tree on a local directory rather than have to clone it for every build. We already have a mechanism for that, it's called override-srcdir. It's been available since September 2011, more than a year before this patch was committed. Otherwise, we're going to be adding support for local sources in other packages. First was U-Boot as submitted by Adam. But what next? We can't have such support for all packages, especially since override-srcdir does the job. Besides, using a local source tree makes the build non-reproducible, so we don't really want to have this in a .config (or defconfig). We only handle the boolean option in legacy, as there is nothing we can do with the directory path. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Rafal Fabich <rafal.fabich@gmail.com> Cc: Peter Korsgaard <peter@korsgaard.com> Cc: Arnout Vandecappelle <arnout@mind.be> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Cc: Adam Duskett <aduskett@gmail.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* linux: allow the selection of the architecture's default configurationGravatar Thomas Petazzoni2016-06-181-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To configure the Linux kernel, we currently provide two options: 1. Passing a defconfig name (for example "multi_v7"), to which we append "_defconfig" to run "make multi_v7_defconfig". 2. Passing a path to a custom configuration file. Unfortunately, those two possibilities do not allow to configure the kernel when you want to use the default configuration built into the kernel for a given architecture. For example, on ARM64, there is a single defconfig simply called "defconfig", which you can load by running "make defconfig". Using the mechanism (1) above doesn't work because we append "_defconfig" automatically. One solution would be to change (1) and require the user to enter the full defconfig named (i.e "multi_v7_defconfig" instead of "multi_v7"), but we would break all existing Buildroot configurations. So instead, we add a third option, which simply tells Buildroot to use the default configuration for the selected architecture. In this case, Buildroot will configure the kernel by running "make defconfig". Cc: Naresh Kamboju <naresh.kamboju@linaro.org> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* linux: align endianess based on the Buildroot configurationGravatar Ofer Heifetz2016-06-111-0/+15
| | | | | | | | | The endianess of the Linux kernel should be based on BR2_ENDIAN, so that it is automatically built for the right endianness. Signed-off-by: Ofer Heifetz <oferh@marvell.com> [Thomas: tweak commit message, add comment in .mk file.] Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* linux: use the generic help rulesGravatar Yann E. MORIN2016-06-071-0/+7
| | | | | | | | Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Arnout Vandecappelle <arnout@mind.be> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> [Thomas: don't use the helper.] Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* linux: provide symlink dtc->linux-dtc is there is no dtc yetGravatar Thomas De Schampheleire2016-05-311-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | Commit ab74e09eb4e28dab8bed8d783c5f0464d39a32e7 renamed the dtc host tool provided by linux to linux-dtc to avoid clashes with the dtc host tool provided by host-dtc. However, external scripting may well rely on the existence of a device tree compiler as $(HOST_DIR)/usr/bin/dtc, regardless of its source. Changing these external scripts to use linux-dtc means that the scripts need to be aware of the buildroot release they are working with, which is not very nice. Add a symlink dtc->linux-dtc when no $(HOST_DIR)/usr/bin/dtc is present. When host-dtc is not enabled, the end result will be dtc and linux-dtc representing the same thing. When host-dtc is enabled, either it is build before linux and no symlink is created at any time, or it is build after linux, and the 'install' command in host-dtc will overwrite the symlink with a proper dtc. In both cases, the end result will be dtc and linux-dtc representing a different thing. Cc: Peter Korsgaard <peter@korsgaard.com> Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com> Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* linux: properly install all images in the initramfs caseGravatar Sebastian Frias2016-04-251-2/+2
| | | | | | | | | | | | | | | | | | | | | The target "$(LINUX_DIR)/.stamp_initramfs_rebuilt" uses its own 'cp' command, instead of LINUX_INSTALL_IMAGE/LINUX_INSTALL_IMAGES_CMDS provided by (or updated with) commit 055e6162bba7 ("linux: don't build appended DTB image in place and support multiple images") and thus is not operating properly when APPENDED_DTB is used. Indeed, it copies a single image, and does not copy the one with the DTB appended. This patch replaces the 'cp' command with LINUX_INSTALL_IMAGE which handles APPENDED_DTB. Fixes: 055e6162bba7 ("linux: don't build appended DTB image in place and support multiple images") Signed-off-by: Sebastian Frias <sf84@laposte.net> Tested-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* linux: Add custom Subversion repository support for the packageGravatar Pauli Sundberg2016-04-051-0/+3
| | | | | Signed-off-by: Pauli Sundberg <susundberg@gmail.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* linux: add conditional patch for timeconst.plGravatar Gustavo Zacarias2016-02-101-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | | Kernels older than 3.9 (not counting stable releases) used the timeconst.pl perl script for their build process. The problem with this script is that it used deprecated perl features, namely defined(@array) which was removed for the perl 5.22 release, causing build failure of older kernels on newer distributions. To fix this instead of going the hard way (moving to the new timeconst.bc script) use the easy way by patching timeconst.pl with an upstream patch used for stable releases. First try a dry-run on the patch to see if it applies, if it does then call a proper APPLY_PATCHES to it. Tested against an arbitrary 2.6.30 kernel (applies and builds), against 4.4.1 for a missing timeconst.pl (does not apply since it's missing) and 3.8.13 (does not apply since it's fixed already). Known broken distributions: fedora 23, debian testing (stretch) and unstable (sid). Signed-off-by: Gustavo Zacarias <gustavo.zacarias@free-electrons.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* linux: drop the option to use the same version as that of the headersGravatar Yann E. MORIN2016-02-061-3/+0
| | | | | | | | | | | | | | It is no longer meaningful, now that we have the option to use the kernel version for the linux headers, as it is more logical and more versatile. Add it to legacy. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Cc: Peter Korsgaard <peter@korsgaard.com> Cc: Arnout Vandecappelle <arnout@mind.be> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* kernel-module-imx-gpu-viv: add new packageGravatar Gary Bisson2016-02-021-0/+2
| | | | | | | | | | | | | | | | | | | | | This is the Vivante kernel driver split from the kernel source code in order to make it possible to be used in any kernel source since 3.10.53. The driver source code provided by Freescale needs fixes so the community forked the code to allow faster development and easier integration of fixes from the community. This patch is based on the Yocto equivalent: https://github.com/Freescale/meta-fsl-arm/commit/32cf391 https://github.com/Freescale/meta-fsl-arm/commit/4249193 This package has been tested with the following commands: # modprobe galcore # cd /usr/share/examples/viv_samples/vdk/ # ./tutorial7 Signed-off-by: Gary Bisson <gary.bisson@boundarydevices.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* linux: handle read-only dts filesGravatar Hollis Blanchard2016-01-191-1/+1
| | | | | | | | | | | | Some fine version control systems make all files read-only. The custom DTS file may therefore be read-only, and that permission is preserved when copying into the Linux build directory. A subsequent rebuild tries to 'cp' again, which fails with a "Permission denied" error unless the -f option is used. Signed-off-by: Hollis Blanchard <hollis_blanchard@mentor.com> Acked-by: Nikolay Dimitrov <picmaster@mail.bg> Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* linux: add blind kconfig option to require kernel modulesGravatar Yann E. MORIN2015-12-291-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, packages that need the kernel to have support for laodable modules have two ways to require it: - either the use the kernel-module infra, which does it automatically, - or they do not use it, and they need to require it manually by setting the corresponding Makefile variable; however, they must only set it when they are actually enabled, which makes for a slightly cumbersome and ugly code, like: ifeq ($(BR2_PACKAGE_FOO),y) LINUX_NEEDS_MODULES = y endif Introduce a new blind Kconfig option that packages can select to signify they need kernel modules. That Kconfig option is then used to set the Makefile variable. It makes it cleaner: - code is simpler (one Kconfig line instead of a Makefile if-block, - this is handled at the Kconfig level, which is where we usually handle such dependencies. Packages will be updated in follow-up commits. Reported-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> 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>
* Fix fallout after generated defconfig supportGravatar Yann E. MORIN2015-12-231-1/+1
| | | | | | | | | | | Fix improper use of qstrip; use correct variables. Fixes #8546. Reported-by: craigswank@gmail.com Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* package/linux: handle generated defconfigsGravatar Sam bobroff2015-12-221-6/+7
| | | | | | | | | Signed-off-by: Sam Bobroff <sam.bobroff@au1.ibm.com> [yann.morin.1998@free.fr: move the kconfig-package hunk to the corresponding patch] Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* linux: don't build appended DTB image in place and support multiple imagesGravatar Thomas Petazzoni2015-12-201-17/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, the linux.mk logic for appended DTB image does the appending of the DTB in place, directly at the end of the zImage using a >> sign. This is incorrect because if you run "make linux-rebuild" multiple times, you get the DTB appended over and over again to the image. Since keeping the 'zImage' or 'uImage' name for the appended DTB image is not very clear, this commit moves to using the 'zImage.<dtb>' and 'uImage.<dtb>' format. This way, we can clearly distinguish the original image from the appended one. In addition, this naming scheme easily allows to generate *multiple* appended DTB images: from one zImage, you can generate multiple zImage.<dtb> for several DTBs, and then generate (if requested) the corresponding uImage.<dtb>. To achieve this, this commit: - Changes the definition of LINUX_APPENDED_DTB to iterate over $(KERNEL_DTS_NAME), and generate a zImage.<dtb> image for each of them. - Changes the addition of LINUX_APPENDED_DTB for appended uImage to also iterate over $(KERNEL_DTS_NAME). - Provide a different implementation of LINUX_INSTALL_IMAGE which installs all the appended DTB images (but not the bare image) - Remove the checks that verified that only one DT name is passed when appended DTB is used, since we now support generating multiple DT images. Some of the tested configuration: - Normal uImage with several DTBs BR2_LINUX_KERNEL_DEFCONFIG="mvebu_v7" BR2_LINUX_KERNEL_UIMAGE=y BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x200000" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="armada-xp-matrix armada-xp-gp armada-370-mirabox" Contents of output/images/: armada-370-mirabox.dtb armada-xp-gp.dtb armada-xp-matrix.dtb uImage - Normal zImage with several DTBs BR2_LINUX_KERNEL_DEFCONFIG="mvebu_v7" BR2_LINUX_KERNEL_ZIMAGE=y BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="armada-xp-matrix armada-xp-gp armada-370-mirabox" Contents of output/images: armada-370-mirabox.dtb armada-xp-gp.dtb armada-xp-matrix.dtb zImage - Appended uImage with several DTBs: BR2_LINUX_KERNEL_DEFCONFIG="mvebu_v7" BR2_LINUX_KERNEL_APPENDED_UIMAGE=y BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x200000" BR2_LINUX_KERNEL_INTREE_DTS_NAME="armada-xp-matrix armada-xp-gp armada-370-mirabox" Contents of output/images: uImage.armada-370-mirabox uImage.armada-xp-gp uImage.armada-xp-matrix - Appended zImage with several DTBs: BR2_LINUX_KERNEL_DEFCONFIG="mvebu_v7" BR2_LINUX_KERNEL_APPENDED_ZIMAGE=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="armada-xp-matrix armada-xp-gp armada-370-mirabox" Contents of output/images: zImage.armada-370-mirabox zImage.armada-xp-gp zImage.armada-xp-matrix In all configurations, the contents of output/target/boot/ was the same if BR2_LINUX_KERNEL_INSTALL_TARGET=y. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* linux: only install the DTBs when not in appended DTB modeGravatar Thomas Petazzoni2015-12-201-2/+4
| | | | | | | | | | | | When you're using the "appended DTB" mode, the Device Tree blob gets appended to your kernel image, so there is no point in installing both the DTB and the kernel image to the images or target directories, installing the kernel image itself is sufficient. Therefore, this commit disables the definition of LINUX_INSTALL_DTB when appended DTB is used. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* linux: de-duplicate DTB and Linux image installationGravatar Thomas Petazzoni2015-12-201-12/+8
| | | | | | | | | | | | | | | | | | | | | | | | Currently, the LINUX_INSTALL_DTB and LINUX_INSTALL_DTB_TARGET macros are exactly the same, except for the target directory. Similarly, LINUX_INSTALL_KERNEL_IMAGE_TO_TARGET and LINUX_INSTALL_IMAGES_CMDS are copying the kernel image, just to a different place (and with a different strategy). As a preparation for future additions, this commit de-duplicate this code: - LINUX_INSTALL_DTB becomes a make macro that takes one argument: the destination directory. - LINUX_INSTALL_IMAGE is a new make macro that also takes on argument: the destination directory. Both macros are used by LINUX_INSTALL_KERNEL_IMAGE_TO_TARGET and LINUX_INSTALL_IMAGES_CMDS to respectively install to the target directory and the images directory. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* linux: add support for vmlinuz.bin kernel image formatGravatar Yegor Yefremov2015-12-151-0/+4
| | | | | | | | Linux for MIPS supports raw binary zboot image (vmlinuz.bin). Add it to the "Kernel binary format" list. Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* linux: Add kernel compression selection.Gravatar Johan Sagaert2015-12-131-1/+21
| | | | | | | | | | | | This selection will ensure that the correct host tools will be build used for the kernel compression method used. [Maxime: Select the compression opts in the kernel config too ] Signed-off-by: Sagaert Johan <sagaert.johan@proximus.be> Signed-off-by: Maxime Hadjinlian <maxime.hadjinlian@gmail.com> Reviewed-by: "Yann E. MORIN" <yann.morin.1998 at free.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* linux: Add zImage.epapr targetGravatar Jeremy Kerr2015-10-311-0/+2
| | | | | | Signed-off-by: Jeremy Kerr <jk@ozlabs.org> Signed-off-by: Joel Stanley <joel@jms.id.au> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>