summaryrefslogtreecommitdiffstats
path: root/Makefile
Commit message (Collapse)AuthorAgeFilesLines
* Merge branch 'for-next/misc'Sascha Hauer2021-04-151-28/+6
|\
| * common: add option for shipping KCONFIG_CONFIG as /env/data/configAhmad Fatoum2021-04-131-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | Add a new option that enables access to the barebox configuration file through /env/data/config. This can be useful in environments where a fatter barebox can be tolerated (like on an EFI system partition). It could also be used to conditionally skip tests on disabled functionality in the future. Signed-off-by: Ahmad Fatoum <ahmad@a3f.at> Tested-by: Roland Hieber <rhi@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * kbuild: add -Wtype-limits to compile flagsAhmad Fatoum2021-03-251-0/+3
| | | | | | | | | | | | | | | | | | | | Not warning about e.g. comparisons of unsigned integers with 0 can introduce nasty bugs around error handling especially. Enable the warning to be able to identify these issues in future. Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * x86: drop legacy (PC BIOS) boot in favor of EFIAhmad Fatoum2021-03-251-28/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | The 16-bit port has experienced bitrot and failed to compile with more recent linkers for at least a year. Fixing the linker error is insufficient to restore a barebox that can boot to shell. This continued breakage likely means that there are no users interested in updating. As new x86 projects should be using MACH_EFI_GENERIC anyway, retire support for 16-bit legacy boot (MACH_X86_GENERIC). Acked-by: Juergen Borleis <jbe@pengutronix.de> Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | Release v2021.04.0v2021.04.0Sascha Hauer2021-04-151-1/+1
|/ | | | Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* RISC-V: erizo: migrate to PBLAhmad Fatoum2021-03-231-0/+1
| | | | | | | | | | We now have everything in place to migrate erizo to PBL. As currently, this is the only board, we can drop all non-PBL support in the same go. Cc: Antony Pavlov <antonynpavlov@gmail.com> Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* Merge branch 'for-next/misc'Sascha Hauer2021-03-231-0/+7
|\
| * kbuild: add '-fcf-protection=none' to barebox build optionsAhmad Fatoum2021-03-171-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Ubuntu 19.10 enables this by default for x86 architectures. The option instructs the compiler to generate special nop instruction at all places where execution may jump to. This not only means the incoming setjmp implementations will need to be adjusted[1], but in case the option is extended to expose similar features of other microarches, this could lead to breakages there with newer compilers. Only safe way to use it seems to disable it wholesale and enable it selectively for platforms that are aware of it. So do the disabling part. [1]: https://github.com/ipxe/ipxe/commit/e8393c372 Signed-off-by: Ahmad Fatoum <ahmad@a3f.at> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * kbuild: add '-fno-stack-check' to barebox build optionsAhmad Fatoum2021-03-171-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This ports over Linux commit 3ce120b16cc5 ("kbuild: add '-fno-stack-check' to kernel build options"): Author: Linus Torvalds <torvalds@linux-foundation.org> kbuild: add '-fno-stack-check' to kernel build options It appears that hardened gentoo enables "-fstack-check" by default for gcc. That doesn't work _at_all_ for the kernel, because the kernel stack doesn't act like a user stack at all: it's much smaller, and it doesn't auto-expand on use. So the extra "probe one page below the stack" code generated by -fstack-check just breaks the kernel in horrible ways, causing infinite double faults etc. [ I have to say, that the particular code gcc generates looks very stupid even for user space where it works, but that's a separate issue. ] Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> I am porting it, because it may become more acute with the incoming support for multiple stacks (via initjmp). Signed-off-by: Ahmad Fatoum <ahmad@a3f.at> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | Release v2021.03.0v2021.03.0Sascha Hauer2021-03-221-1/+1
|/ | | | Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* Merge branch 'for-next/virtio'Sascha Hauer2021-02-221-1/+9
|\
| * kbuild: add include/uapi to pathAhmad Fatoum2021-02-221-1/+9
| | | | | | | | | | | | | | | | | | | | | | Import the necessary bits out of the Linux Makefile, so include/uapi goes into the path. This allows importing Linux headers without changing the includes too much. Like with Linux <linux/*.h> is first searched in include/, then include/uapi. Code that explicitly needs the uapi header can include <uapi/linux/*.h>. Signed-off-by: Ahmad Fatoum <ahmad@a3f.at> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | Merge branch 'for-next/misc'Sascha Hauer2021-02-221-2/+14
|\ \
| * | Kbuild: add compile_commands.json targetAhmad Fatoum2021-02-161-2/+14
| |/ | | | | | | | | | | | | | | | | | | | | | | | | The JSON compilation database format specification describes a compile_commands.json file that lists how translation units are compiled by a build system. This makes integration of external tools, like IDEs, LSP servers and static analyzers easier. Import the Linux bits. The database can now be manually generated with make compile_commands.json. Signed-off-by: Ahmad Fatoum <ahmad@a3f.at> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* / Release v2021.02.0v2021.02.0Sascha Hauer2021-02-221-1/+1
|/ | | | Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* Release v2021.01.0v2021.01.0Sascha Hauer2021-01-181-2/+2
| | | | Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* Release v2020.12.0v2020.12.0Sascha Hauer2020-12-111-1/+1
| | | | Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* Merge branch 'for-next/sandbox'Sascha Hauer2020-11-101-0/+3
|\
| * kbuild: force compiler to assume two's complementAhmad Fatoum2020-10-191-0/+3
| | | | | | | | | | | | | | | | | | The kernel is compiled with this option and kernel code we port assumes that integer types are two's complement, so play it safe and disable optimizations that are possibly buggy in respect to barebox. Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | Release v2020.11.0v2020.11.0Sascha Hauer2020-11-091-1/+1
|/ | | | Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* Merge branch 'for-next/misc' into masterSascha Hauer2020-10-141-0/+20
|\
| * kbuild: add dtbs target for building all dtbs of an ARCHAhmad Fatoum2020-10-071-0/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | As described in the documentation, upstream device trees extended by barebox should take care to cause compile errors, not runtime errors, when the paths they extend disappear. This way, breakage can be easily detected when synchronizing the dts/ directory and fixed right then. Make this process easier by providing a dtbs target that builds all device trees available in arch/$(SRCARCH)/dts/. Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | Merge branch 'for-next/buildsystem-version' into masterSascha Hauer2020-10-141-1/+2
|\ \
| * | Makefile: add buildsystem version variableSteffen Trumtrar2020-09-251-1/+2
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Introduce a new variable to store a buildsystem version information. The exact information that is stored here (git commit, git tag,...) is defined by the buildsystem. It is intended to have the possibility to get information about the exact barebox binary, environment and configuration. The variable is utilized the same as KERNELVERSION for linux: make BUILDSYSTEM_VERSION=$COMMITISH Via scripts/mkcompile_h this information is injected into the barebox codebase. Signed-off-by: Steffen Trumtrar <s.trumtrar@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* / Release v2020.10.0v2020.10.0Sascha Hauer2020-10-141-1/+1
|/ | | | Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* Merge branch 'for-next/kasan' into masterSascha Hauer2020-09-251-1/+5
|\
| * Add KASan supportSascha Hauer2020-09-221-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | KernelAddressSANitizer (KASAN) is a dynamic memory error detector. It provides a fast and comprehensive solution for finding use-after-free and out-of-bounds bugs. This adds support for KASan to barebox. It is basically a stripped down version taken from the Linux Kernel as of v5.9-rc1. Quoting the initial Linux commit 0b24becc810d ("kasan: add kernel address sanitizer infrastructure") describes what KASan does: | KASAN uses compile-time instrumentation for checking every memory access, | therefore GCC > v4.9.2 required. v4.9.2 almost works, but has issues with | putting symbol aliases into the wrong section, which breaks kasan | instrumentation of globals. | | Basic idea: | | The main idea of KASAN is to use shadow memory to record whether each byte | of memory is safe to access or not, and use compiler's instrumentation to | check the shadow memory on each memory access. | | Address sanitizer uses 1/8 of the memory addressable in kernel for shadow | memory and uses direct mapping with a scale and offset to translate a | memory address to its corresponding shadow address. | | For every 8 bytes there is one corresponding byte of shadow memory. | The following encoding used for each shadow byte: 0 means that all 8 bytes | of the corresponding memory region are valid for access; k (1 <= k <= 7) | means that the first k bytes are valid for access, and other (8 - k) bytes | are not; Any negative value indicates that the entire 8-bytes are | inaccessible. Different negative values used to distinguish between | different kinds of inaccessible memory (redzones, freed memory) (see | mm/kasan/kasan.h). | | To be able to detect accesses to bad memory we need a special compiler. | Such compiler inserts a specific function calls (__asan_load*(addr), | __asan_store*(addr)) before each memory access of size 1, 2, 4, 8 or 16. | | These functions check whether memory region is valid to access or not by | checking corresponding shadow memory. If access is not valid an error | printed. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | Release v2020.09.0v2020.09.0Sascha Hauer2020-09-231-1/+1
|/ | | | Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* Release v2020.08.0v2020.08.0Sascha Hauer2020-08-171-1/+1
| | | | Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* Merge branch 'for-next/module'Sascha Hauer2020-07-271-2/+10
|\
| * Makefile: Initialize and export KBUILD variablesDavid Dgien2020-07-011-2/+10
| | | | | | | | | | | | | | | | | | Initialize and export KBUILD KERNEL and MODULE variables. Otherwise, appending to them elsewhere in the srctree will not be seen by the build commands in Makefile.lib Signed-off-by: David Dgien <dgienda125@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | Merge branch 'for-next/misc'Sascha Hauer2020-07-271-14/+1
|\ \
| * | kbuild: remove package targetsMasahiro Yamada2020-06-171-12/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This hunk is already out of sync from upstream Linux. Barebox does not support package targets, so let's delete this rotten code. Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * | kbuild: remove AS variableMasahiro Yamada2020-06-171-2/+1
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The assembler files in the barebox are *.S instead of *.s, so they must be preprocessed. Since 'as' of GNU binutils is not able to preprocess, we always use $(CC) as an assembler driver. Remove AS variable. Linux also removed AS. See Linux commits: aa824e0c962b ("kbuild: remove AS variable") 1ca0c2f61211 ("kbuild: remove unused AS assignment") Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | Merge branch 'for-next/kbuild'Sascha Hauer2020-07-271-3/+10
|\ \
| * | kbuild: add infrastructure to build userspace programsMasahiro Yamada2020-06-231-3/+10
| | | | | | | | | | | | | | | | | | | | | Import Linux commit 7f3a59db274c3e3d884c785e363a054110f1c266 Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * | kbuild: add -Wmissing-prototypes and -std=gnu89 to KBUILD_HOSTCFLAGSMasahiro Yamada2020-06-231-2/+2
| |/ | | | | | | | | | | | | Align with Linux kernel. Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* / Release v2020.07.0v2020.07.0Sascha Hauer2020-07-141-1/+1
|/ | | | Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* Merge branch 'for-next/kbuild'Sascha Hauer2020-06-111-6/+10
|\
| * kbuild: switch over to thin archiveMasahiro Yamada2020-05-251-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Starting v4.13, Linux always uses thin archive instead of relocatable ELF to combine builtin objects. The thin archive is basically a text file that only contains paths to object files. As Linux commit 98ced886dd79 mentioned, this has a lot of benefits: - save disk space for builds - speed-up building a little - fix some issues when liking a giant executable (for example, allyesconfig on ARM Linux) - work better with dead code elimination The last one is important for barebox because pbl highly relies on the dead code elimination (-f{function,data}-sections and --gc-sections) dropping symbols that are unreachable from the linker's entry point. The dead code elimination does not work if the same symbol names are used in the pevious incremental link mechanism because the same name symbols all go into the same section. Commit a83c97f2a406 ("ARM: socfpga: generate smaller images when multiple boards are selected") worked around it by giving a dedicate section to each of the same name symbols. This workaround can go away. built-in.o was renamed to built-in.a since it is now an archive. built-in-pbl.o was renamed to built-in.pbl.a for consistency. Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * kbuild: build modules by 'make'Masahiro Yamada2020-05-201-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | In Linux, 'make' and 'make all' work equivalently; it builds both vmlinux and modules. In barebox, strangely, 'make all' builds both barebox and modules, but 'make' builds only barebox because KBUILD_MODULES is unset. The check for 'ifeq ($(MAKECMDGOALS),)' is missing since the day-one. Fixes: b02e0966412c ("add additional linking stage for modules") Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * kbuild: add -std=gnu89 to KBUILD_CFLAGSMasahiro Yamada2020-05-201-1/+1
| | | | | | | | | | | | | | | | Barebox imports lots of code from Linux, so should use the same language standard as Linux. Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | Release v2020.06.0v2020.06.0Sascha Hauer2020-06-101-1/+1
|/ | | | Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* Merge branch 'for-next/kbuild'Sascha Hauer2020-05-141-328/+413
|\
| * kbuild: resync top Makefile, mkmakefile, tags.sh with Linux 5.7-rc4Masahiro Yamada2020-05-121-260/+345
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The prologue of the build system is not specific to Linux or Barebox. Paritially resync with Linux 5.7-rc4 - In Linux, $(objtree) is always '.', and $(srctree) might be relative. I am keeping both absolute for now to avoid unexpected breakage. - I did not resync single target for now. We need to touch Makefile.build a lot if we want to resync it. - 'export CDPATH=' is Barebox-only code, which was added by commit 6cc8d0544658 ("Makefile: disable CDPATH"). Keep it. - KBUILD_SRC no longer exists in the upstream Linux. I replaced it with building_out_of_srctree. - scripts/mkmakefile does not contain anything specific to Linux or Barebox. Resync it with Linux 5.7-rc4 - scripts/tags was imported from Linux 3.6 with some cherry-picks on top of that. Resync it with Linux 5.7-rc4 Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * kbuild: add -Wall to KBUILD_HOSTCXXFLAGSMasahiro Yamada2020-05-121-1/+1
| | | | | | | | | | | | | | | | | | [ Linux commit 735aab1e008b6d9ba8057caa647b6619bf73460f ] Add -Wall to catch more warnings for C++ host programs. Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * kbuild: add -Werror={strict-prototypes, implicit-int} to KBUILD_CFLAGSMasahiro Yamada2020-05-121-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Turn Wstrict-prototypes into an error - Add -Werror=implicit-int - Use the standard form -Werror=... for implicit-function-declaration This commit imports the following Linux commits. They should work for barebox too. 80970472179a Makefile: enable -Werror=implicit-int and -Werror=strict-prototypes by default eeb5687a7139 kbuild: add -Werror=strict-prototypes flag unconditionally 61a0902a06d6 kbuild: add -Werror=implicit-int flag unconditionally b89f25ea7892 kbuild: use -Werror=implicit-... instead of -Werror-implicit-... Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * kbuild: sync if_changed and friends with Linux 5.7-rc2Masahiro Yamada2020-05-041-11/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | Resync cmd, if_change, if_changed_dep, and if_changed_rule. Clean up the users of if_changed_rule. I deleted the modversions rule. It is dead code because barebox does not define CONFIG_MODVERSIONS. It does not work without scripts/genksyms/ anyway. Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * kbuild: sync filechk rule with Linux 5.7-rc2Masahiro Yamada2020-05-041-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The 'filechk' in the latest Linux works more simply, reliably. - Do not show CHK every time - Delete the *.tmp file when the filechk_$(1) fails - Do not open the first prerequisite. This is unneeded in most cases. I deleted pointeless dependency on Makefile. Also delete the meaningless assignment to 'targets' because filechk does not generate .cmd file. Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * kbuild: do not delete $@ explicitly on failureMasahiro Yamada2020-05-041-5/+1
| | | | | | | | | | | | | | | | | | | | The .DELETE_ON_ERROR special target is specified in scripts/Kbuild.include You do not need to delete $@ explicitly when the command fails. GNU Make automatically does it. Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>