aboutsummaryrefslogtreecommitdiffstats
path: root/include/kernel-defaults.mk
Commit message (Collapse)AuthorAgeFilesLines
* image: Fix the CONFIG_EXTERNAL_CPIO logicLuca Barbato2023-10-241-1/+1
| | | | | | | | | Fix the qstrip call. Fixes: #13776. Signed-off-by: Luca Barbato <lu_zero@gentoo.org> (cherry picked from commit 330492a101cdb1608d1194496c1b620315ef8bd8)
* build: revert 54070a1 (all kernels are >= 5.10)Sebastian Kemper2023-05-211-7/+2
| | | | | | | Commit 54070a1 was added to allow building proper SDKs with kernels < 5.10. Now that all targets use at least kernel 5.10 it can be reverted. Signed-off-by: Sebastian Kemper <sebastian_ml@gmx.net>
* build: fix incorrect initramfs gzip compressionTony Butler2023-04-181-1/+1
| | | | | | | | | | | | | | | | | Requires: tools/libdeflate fix consistency of executable to use `$(STAGING_DIR_HOST)/bin/libdeflate-gzip`, and not system-installed ones from the usual environment `PATH`; this affects option `CONFIG_KERNEL_INITRAMFS_COMPRESSION_GZIP` this may have worked in the past but only via side effect of having the binaries on the host system (and whatever unpredictable version or patchset those might be), and did not use the improved but totally compatible libdeflate-gzip Fixes: 330bd380e8b6 ("image: allow building FIT and uImage with ramdisk") Signed-off-by: Tony Butler <spudz76@gmail.com>
* build: fix incorrect initramfs bzip2 compressionTony Butler2023-04-181-1/+1
| | | | | | | | | | | | | | | Requires: tools/bzip2 fix consistency of executable to use `$(STAGING_DIR_HOST)/bin/bzip2`, and not system-installed ones from the usual environment `PATH`; this affects option `CONFIG_KERNEL_INITRAMFS_COMPRESSION_BZIP2` this may have worked in the past but only via side effect of having the binaries on the host system (and whatever unpredictable version or patchset those might be) Fixes: 330bd380e8b6 ("image: allow building FIT and uImage with ramdisk") Signed-off-by: Tony Butler <spudz76@gmail.com>
* include: use libdeflate's gzip to decompressRosen Penev2023-01-171-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | libdeflate decompresses much faster than gzip. Example: ~/d/openwrt> time gzip -dc dl/cmake-3.25.1.tar.gz > /dev/null ________________________________________________________ Executed in 1.01 secs fish external usr time 912.61 millis 1.67 millis 910.94 millis sys time 32.21 millis 0.25 millis 31.96 millis ~/d/openwrt> time libdeflate-gzip -dc dl/cmake-3.25.1.tar.gz > /dev/null ________________________________________________________ Executed in 523.04 millis fish external usr time 415.48 millis 1.07 millis 414.41 millis sys time 107.74 millis 0.15 millis 107.59 millis ~/d/openwrt> time gzip -dc dl/tessdata-4.1.0.tar.gz > /dev/null ________________________________________________________ Executed in 8.99 secs fish external usr time 8.90 secs 530.00 micros 8.90 secs sys time 0.07 secs 63.00 micros 0.07 secs ~/d/openwrt> time libdeflate-gzip -dc dl/tessdata-4.1.0.tar.gz > /dev/null ________________________________________________________ Executed in 2.74 secs fish external usr time 2.38 secs 537.00 micros 2.38 secs sys time 0.35 secs 66.00 micros 0.35 secs Place libdeflate into tools-core as it is needed to decompress other archives. Signed-off-by: Rosen Penev <rosenp@gmail.com>
* build: fix incomplete initramfs compression optionsTony Butler2023-01-171-2/+2
| | | | | | | | | | | | Requires: tools/lz4, tools/lzop complete the wiring so that these options work: * `CONFIG_KERNEL_INITRAMFS_COMPRESSION_LZO` * `CONFIG_KERNEL_INITRAMFS_COMPRESSION_LZ4` Signed-off-by: Tony Butler <spudz76@gmail.com> [remove blocking dependencies for separate ramdisk, fix lzop options] Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* uml: headers are not exportableChristian Lamparter2022-09-241-1/+1
| | | | | | | | | | | | | | | | | | When building UML this showed up as of late (2022-09-01): | Makefile:1335: *** Headers not exportable for UML. Stop. This message popped up because of an upstream patch that fixed this error not showing up sooner. For more information see: <https://lore.kernel.org/lkml/20220901011252.550830-1-masahiroy@kernel.org/T/> Now, I don't think we can just skip the kernel headers. Some userspace applications are going to need these. So, The next best alternative I can think of, is to go with the headers by the host arch the UML is compiled for. (Technically, ARCH= should be safe for all other targets as well... But let's not poke a hornet's nest) Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
* kernel: set SOURCE_DATE_EPOCH for initramfs root dirDaniel Golle2022-04-061-1/+1
| | | | | | | | Make sure the timestamp of the root directory of the initramfs is set to SOURCE_DATE_EPOCH as well. Fixes: 29d7461d11 ("kernel: set options to make external initramfs reproducible") Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* kernel: fix initramfs reproducibilityDaniel Golle2022-03-291-1/+1
| | | | | | | | | Make sure xz uses at least 2 threads so compression always runs in multi-threaded mode as the resulting file in single-threaded mode differs. Fixes: 29d7461d11 ("kernel: set options to make external initramfs reproducible") Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* kernel: set options to make external initramfs reproducibleDaniel Golle2022-03-241-3/+4
| | | | | | | Run cpio as well as compressors in such ways that they are generating reproducible output. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* image: fix CONFIG_EXTERNAL_CPIO handlingDaniel Golle2021-11-281-1/+1
| | | | | | | | | CONFIG_EXTERNAL_CPIO is a string variable, hence testing for 'y' doesn't make much sense here. Fixes: 330bd380e8 ("image: allow building FIT and uImage with ramdisk") Reported-by: Huangbin Zhan <zhanhb88@gmail.com> Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* build: kernel: avoid unnecessary package rebuildsEneas U de Queiroz2021-11-011-0/+4
| | | | | | | | | | | | | | | The $(LINUX_DIR)/.config timesptamp changes between runs of make target/compile and make target/install (which builds the image). Kernel-dependent packages and out of tree modules are built in between those runs, and they check the .config timestamp to decide if they need to be rebuilt. Save the target/compile .config to use its timestamp if the file does not change between runs. That way the subsequent kernel packages are not unnecessarily rebuilt when you run 'make' back to back. Signed-off-by: Eneas U de Queiroz <cotequeiroz@gmail.com>
* build: fix regression for kernels < 5.10Sebastian Kemper2021-05-251-2/+7
| | | | | | | | | | | | | | | | | | | | This fixes a regression introduced with commit 5ed1e5140a80558ab47fd70410ae3242bed5becf ("build: build kernel image before building modules/packages"). Before this commit the make target would always include "modules", resulting in a MODPOST and a complete Module.symvers file. Since this commit a MODPOST of the kernel modules is not guaranteed for kernels < 5.10. This results in some broken SDKs in which external packages that depend on exported symbols from kernel modules fail to compile. Adding "modules" back to the calls to the CompileImage defines fixes the regression. For kernels > 5.10 this is not needed, but it doesn't cause any harm either. Tested with kernels 5.4.x and 5.10.x. Signed-off-by: Sebastian Kemper <sebastian_ml@gmx.net>
* kernel-defaults: fix external kernel build when user_headers is missingMatt Merhar2021-05-231-1/+3
| | | | | | | Use an 'if' so the absence of $(LINUX_DIR)/user_headers doesn't make the line evaluate to false and cause the build to fail. Signed-off-by: Matt Merhar <mattmerhar@protonmail.com>
* build: introduce $(MKHASH)Leonardo Mörlein2021-05-131-3/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Before this commit, it was assumed that mkhash is in the PATH. While this was fine for the normal build workflow, this led to some issues if make TOPDIR="$(pwd)" -C "$pkgdir" compile was called manually. In most of the cases, I just saw warnings like this: make: Entering directory '/home/.../package/gluon-status-page' bash: line 1: mkhash: command not found bash: line 1: mkhash: command not found bash: line 1: mkhash: command not found bash: line 1: mkhash: command not found bash: line 1: mkhash: command not found bash: line 1: mkhash: command not found bash: line 1: mkhash: command not found bash: line 1: mkhash: command not found [...] While these were only warnings and the package still compiled sucessfully, I also observed that some package even fail to build because of this. After applying this commit, the variable $(MKHASH) is introduced. This variable points to $(STAGING_DIR_HOST)/bin/mkhash, which is always the correct path. Signed-off-by: Leonardo Mörlein <me@irrelefant.net>
* build: use numeric uid/gid on cpio callsFelix Fietkau2021-03-031-1/+1
| | | | | | | There are systems that don't have the 'root' group, so don't rely on host specific user/group names Signed-off-by: Felix Fietkau <nbd@nbd.name>
* treewide: fix spelling 'seperate' -> 'separate'Daniel Golle2021-02-281-3/+3
| | | | | | | This popular spelling mistake was also introduced by myself lately. Fix it everywhere. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* include: use cpio from staging dirDavid Bauer2021-02-281-1/+1
| | | | | | | As we built our own CPIO now, use this version instead of whatever the host may or may not provide. Signed-off-by: David Bauer <mail@david-bauer.net>
* image: allow building FIT and uImage with ramdiskDaniel Golle2021-02-241-0/+26
| | | | | | | | | | | | | Instead of embedding the initrd cpio archive into the kernel, allow for having an external ramdisk added to the FIT or uImage. This is useful to overcome kernel size limitations present in many stock bootloaders, as the ramdisk is then loaded seperately and doesn't add to the kernel size. Hence we can have larger ramdisks to host ie. installers with all binaries to flash included (or a web-based firmware selector). In terms of performance and total size the differences are neglectible. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* build: fix build with CONFIG_STRIP_KERNEL_EXPORTSFelix Fietkau2021-02-171-3/+3
| | | | | | Only use symtab.h on the final kernel link Signed-off-by: Felix Fietkau <nbd@nbd.name>
* build: make zstd initramfs selectableFelix Fietkau2021-02-161-1/+1
| | | | | | fix typo in kernel initramfs zstd compression option Signed-off-by: Felix Fietkau <nbd@nbd.name>
* build: build kernel image before building modules/packagesFelix Fietkau2021-02-161-3/+3
| | | | | | | This is needed for linux 5.10, where modules.builtin is generated from vmlinux.o Signed-off-by: Felix Fietkau <nbd@nbd.name>
* build: use SPDX license tagsPaul Spooren2021-02-051-5/+2
| | | | | | | | | The license folder is a core part of OpenWrt and all GPL-2.0 licensed. Use SPDX license tags to allow machines to check licenses. Signed-off-by: Paul Spooren <mail@aparcar.org> [rebase, keep some Copyright lines, sharpen commit message] Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
* kernel-defaults: Manage the enabling/disabling of ZSTDFlorian Fainelli2021-01-091-0/+1
| | | | | | | | Linux 5.9 introduces support for ZSTD ramdisk and initrd compression, make sure we enable/disable the relevant options when building an initramfs enabled kernel. Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
* kernel-defaults: Delete external source tree user_headersFlorian Fainelli2021-01-091-0/+1
| | | | | | | | | | When we use an external kernel tree which may not have been fully cleaned, there may be user_headers left which do not match the target architecture, leading to build failures for packages that do an explicit inclusion of user_headers (such as iproute2 or iptables). Make sure we delete them while preparing the directory. Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
* build: make testing kernel decompression more portableFelix Fietkau2020-12-051-1/+1
| | | | | | | On non-GNU systems, zcat often does not handle gzip decompression. Use gzip -dc like the regular unpack command Signed-off-by: Felix Fietkau <nbd@nbd.name>
* kernel-defaults: ensure SOURCE_DATE_EPOCH on /initPaul Spooren2019-10-021-0/+1
| | | | | | | | | | This is a follow up of 8cb13f4e6d which sets the right timestamp for the /init file in initramfs. The previous patch doesn't cover it as the files appear to come from a later step during compilation. CC: Alexander Couzens <lynxis@fe80.eu> Signed-off-by: Paul Spooren <mail@aparcar.org>
* kernel: fix downloading rcX releasesRafał Miłecki2018-12-031-2/+8
| | | | | | | | They are no longer stored in the "testing" subdirectory and are not available as .tar.xz archives. If -rc is detected download it from the git.kernel.org and use .tar.gz. Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
* config: don't define the same symbol twiceKoen Vandeputte2018-01-171-1/+0
| | | | | | | | | | | | | | | | | In commit fce35bce0f6e ("config: support new symbol intro'd in kernel 4.12") I forgot to remove the initial debug test line. This clearly is wrong as the same symbol is defined conditionally in the line below as it should be. I looked over it as I just checked if the symbol was present now upon testing it. Fixes: fce35bce0f6e ("config: support new symbol intro'd in kernel 4.12") Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
* config: support new symbol intro'd in kernel 4.12Koen Vandeputte2018-01-131-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Symbol CONFIG_INITRAMFS_FORCE allows to ignore the value passed by the bootloader. By default, all symbols containing INITRAMFS are wiped from the final config and then re-added conditionally. Add support for this symbol, as the build will stop otherwise questioning the user about this option: * Restart config... * * * General setup * Cross-compiler tool prefix (CROSS_COMPILE) [] Compile also drivers which will not load (COMPILE_TEST) [N/y/?] n ... Initial RAM filesystem and RAM disk (initramfs/initrd) support (BLK_DEV_INITRD) [Y/n/?] y Initramfs source file(s) (INITRAMFS_SOURCE) [] Ignore the initramfs passed by the bootloader (INITRAMFS_FORCE) [N/y/?] (NEW) Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
* build: move definition of KBUILD_BUILD_TIMESTAMP to include/kernel.mkAlexander Couzens2017-06-171-6/+0
| | | | | | | Fixes: 0aed054bec (build: add KERNEL_MAKE and KERNEL_MAKE_FLAGS variables and move to kernel.mk) Signed-off-by: Alexander Couzens <lynxis@fe80.eu>
* build: add KERNEL_MAKE and KERNEL_MAKE_FLAGS variables and move to kernel.mkFelix Fietkau2017-06-071-29/+4
| | | | | | | | This allows packages to use kernel make options without the forced -C $(LINUX_DIR). It also makes it more clear that it to be called from kernel module packages directly. Signed-off-by: Felix Fietkau <nbd@nbd.name>
* include: Do not alter KERNELRELEASE for external/git kernelsFlorian Fainelli2017-05-251-1/+6
| | | | | | | | | In case we use external and/or git cloned kernels, let the kernel determine the appropriate KERNELRELEASE. We cannot used LINUX_UNAME_VERSION because that one gets determined at a later time, when the kernel is already built proper. Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
* Revert "kernel: prevent addition of scm marker to localversion"Florian Fainelli2017-05-251-4/+0
| | | | | | | | | | This reverts commit 0df2c6563a3537ed21b28a9fb6874bf2718afd05 since it gets in the way of identifying properly which kernel we are running. This is particularly important if LEDE is using external kernels/git cloned kernels. We want to make sure we only load modules from that specific kernel. Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
* kernel: move initramfs's init script out of base-filesRafał Miłecki2017-04-041-1/+1
| | | | | | | | Keeping it in base-files was resulting in adding it to the base-files package. This file is meant to be included manually for initramfs images only. Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
* kernel: do not try to copy vmlinux out of arch/$(ARCH)/bootFelix Fietkau2017-03-221-1/+1
| | | | Signed-off-by: Felix Fietkau <nbd@nbd.name>
* kernel: speed up build system by getting rid of redundant workFelix Fietkau2017-03-161-1/+3
| | | | | | | | | KERNELRELEASE contains a $(shell) call which is evaluated over and over again. The call to checksyscalls.sh is unnecessary for LEDE and also takes a few seconds to complete. Signed-off-by: Felix Fietkau <nbd@nbd.name>
* build: use mkhash to replace various quirky md5sum/openssl callsFelix Fietkau2017-01-051-1/+1
| | | | Signed-off-by: Felix Fietkau <nbd@nbd.name>
* include/kernel: Switch to git download methodFlorian Fainelli2016-12-041-10/+1
| | | | | | | | | Utilize the existing git download logic from include/download.mk and migrate the kernel download over to it. This avoids repeatedly cloning kernel sources after a make target/linux/clean for instance. Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: Felix Fietkau <nbd@nbd.name> [fix build error]
* kernel: add STAGING_DIR_HOST/lib to host library search pathFelix Fietkau2016-09-291-0/+1
| | | | Signed-off-by: Felix Fietkau <nbd@nbd.name>
* build: use perl instead of GNU date for KBUILD_BUILD_TIMESTAMPFelix Fietkau2016-08-231-1/+7
| | | | | | Fixes warning on non-Linux systems Signed-off-by: Felix Fietkau <nbd@nbd.name>
* kernel: prevent adding custom string to localversionJosua Mayer2016-08-181-0/+1
| | | | | | | | | When the kernel build picks up a localversion file in the source tree, that string is unconditionally appended to LOCALVERSION and affects the uname string. Make sure to delete any such file. Signed-off-by: Josua Mayer <josua.mayer97@gmail.com>
* kernel: prevent addition of scm marker to localversionJosua Mayer2016-08-181-0/+4
| | | | | | | | | When building the kernel from a git repository, the kernel build appends either a + or a short commit hash to localversion. This behaviour can be prevented by passing the empty LOCALVERSION variable to make. Signed-off-by: Josua Mayer <josua.mayer97@gmail.com>
* kernel: check SOURCE_DATE_EPOCH before setting KBUILD_BUILD_TIMESTAMPJonas Gorski2016-08-131-1/+1
| | | | | | Make sure SOURCE_DATE_EPOCH actually contains something. Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
* kernel: allow reproducable buildsJonas Gorski2016-08-131-0/+2
| | | | | | | | | | | | Similar how we fix the file times in the filesystems, fix the build time of the kernel, and make the build number static. This should allow the kernel build to be reproducable when combined with setting the KERNEL_BUILD_USER and _DOMAIN in case of different machines. The reproducability only applies to non-initramfs kernels, those still require additional changes. Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
* kernel: make the kernel build auto-clean the build dir like package buildsFelix Fietkau2016-08-051-1/+1
| | | | | | Previous behavior can be restored by using QUILT=1 on target/prepare Signed-off-by: Felix Fietkau <nbd@nbd.name>
* build: split scripts/metadata.pl into target-metadata.pl and package-metadata.plFelix Fietkau2016-06-071-1/+1
| | | | Signed-off-by: Felix Fietkau <nbd@nbd.name>
* kernel: Revert "kernel: set root on NFS when enabled"Florian Fainelli2016-02-111-13/+0
| | | | | | | | | | This reverts r48591, users needing NFS root will know how to configure their platform and kernel command-line appropriately. Reported-by: Petr Štetiar <ynezz@true.cz> Signed-off-by: Florian Fainelli <florian@openwrt.org> SVN-Revision: 48689
* kernel: enable CONFIG_KALLSYMS_UNCOMPRESSED=yFelix Fietkau2016-02-081-1/+1
| | | | | | | | | It was enabled ages ago when it was added. It still saves about 10k after LZMA, so let's enable it again. Signed-off-by: Felix Fietkau <nbd@openwrt.org> SVN-Revision: 48680
* kernel: set root on NFS when enabledFlorian Fainelli2016-02-011-0/+13
| | | | | | | | | Replace the configured root device with a NFS root device and automatic IP configuration for booting over NFS. Signed-off-by: Florian Fainelli <florian@openwrt.org> SVN-Revision: 48591