summaryrefslogtreecommitdiff
path: root/Makefile.mk
AgeCommit message (Collapse)Author
2024-10-15Makefile.mk: Remove Wno-trigraphsElyes Haouas
commit Ia219ccc added -Wno-trigraphs to let unit-tests builds. Change-Id: Ibfe47194daafc02f89c83f045fb73c99a7c86d5d Signed-off-by: Elyes Haouas <ehaouas@noos.fr> Reviewed-on: https://review.coreboot.org/c/coreboot/+/83453 Reviewed-by: coreboot org <coreboot.org@gmail.com> Reviewed-by: Felix Singer <service+coreboot-gerrit@felixsinger.de> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
2024-09-20Makefile.mk: Skip unnecessary recompiles when static.{c,h} are updatedNicholas Chin
The generated static.c file output by sconfig is currently added as a prerequisite for all objects to ensure that static.h exists before compiling anything that might need it. However, this forces every single object out of date when the compiled devicetree is updated, even though not every file actually needs static.h. Only static.h actually needs to exist before compilation of other objects, since static.c is an independent compilation unit that doesn't need to exist before other objects can be built. Thus, change the prerequisite from static.c to static.h, and add a rule for static.h that depends on static.c. The recipe is a simple `true` since sconfig generates static.c and static.h at the same time. To prevent unnecessary recompiles, make static.h an order-only prerequisite [1] using the new generated files argument for create_cc_template to ensure that the header exists before any object might need it, but without forcing a recompile of all objects by default whenever it is updated. On a clean build, all objects will be compiled since they do not exist, and these will occur after static.h is generated due to the default order-only prerequisite. On subsequent incremental compiles, sources that do need static.h will be appropriately marked out of date due to the generated .d dependency files from the compiler, which list static.h as a normal prerequisite for each objects that do include it, which overrides the default order-only prerequisite. The dependency files generated for all other objects will not include static.h, and thus the objects will not be updated since the default order-only dependency does not force them out of date. After updating the devicetree of qemu-i440fx after a clean build, comparing the build log with `make --debug=why` with the generated dependency files indicates that only objects that actually depend on static.h were rebuilt, instead of every object. Running a timeless incremental build after making a change in the devicetree yielded identical roms when performed with this patch and main, with the only difference being the number of objects that needed to be rebuilt. Also tested with the E6430. [1] https://www.gnu.org/software/make/manual/html_node/Prerequisite-Types.html Change-Id: I34efc162760ae703285f3982fa16cc23a86b37f6 Signed-off-by: Nicholas Chin <nic.c3.14@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/84387 Reviewed-by: Nico Huber <nico.h@gmx.de> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
2024-09-063rdparty/open-power-signing-utils: add SecureBoot utility for OpenPOWERMichał Żygowski
Signing is performed with test keys by default, set CONFIG_SIGNING_KEYS_DIR to a non-empty value to use other keys. Depending on the version of the Talos II firmware this alone might not allow booting because coreboot replaces only part of the stock firmware and its newer versions enable secure boot by default (not to be confused with SecureBoot in EFI). The signing performed in this commit is still a prerequisite and might as well be done on its own. Fixing operation with newer stock firmware will be done in a follow-up change. Change-Id: Id88baef5ecb1f8ffd74a7f464bbbaaaea0ca643d Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com> Signed-off-by: Sergii Dmytruk <sergii.dmytruk@3mdeb.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/67065 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Krystian Hebel <krystian.hebel@3mdeb.com>
2024-09-06Makefile.mk: compile ECC tools and inject ECC to final imageMichał Żygowski
$ build/cbfstool build/coreboot.rom print FMAP REGION: COREBOOT Name Offset Type Size Comp cbfs_master_header 0x0 cbfs header 32 none fallback/romstage 0x80 stage 18495 LZ4 (30096 decompressed) fallback/ramstage 0x4940 stage 24288 LZMA (61240 decompressed) config 0xa880 raw 1324 LZMA (3308 decompressed) revision 0xae00 raw 726 none build_info 0xb100 raw 122 none (empty) 0xb1c0 null 347108 none header_pointer 0x5fdc0 cbfs header 4 none Change-Id: I8541aa6f1429ed6143830ed11c47c150183ddf0d Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com> Signed-off-by: Sergii Dmytruk <sergii.dmytruk@3mdeb.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/67064 Reviewed-by: Paul Menzel <paulepanter@mailbox.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Elyes Haouas <ehaouas@noos.fr>
2024-08-24Add initial experimental LTO supportArthur Heymans
This will not succeed in compiling on all target and compiler combinations but at least gets the ball rolling. The change is not invasive. Some notes: - GCC has issues with LTO on ARM - Clang uses LLD automatically on some arch - Clang with LTO fails on x86 as it forwards the linking to GCC for some reason - SMM building succeeds but the binary is empty Change-Id: Ieb9204777fd349542744a8946e2207731c37969c Signed-off-by: Arthur Heymans <arthur@aheymans.xyz> Reviewed-on: https://review.coreboot.org/c/coreboot/+/84003 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Lean Sheng Tan <sheng.tan@9elements.com> Reviewed-by: Nico Huber <nico.h@gmx.de>
2024-08-22Makefile.mk: Add a common link_stage function and use itArthur Heymans
A few differences with the original link targets: - 'libs' is now supported on all arch even though only x86 uses it - compiler_rt is included on arch that previously did not (arm). This however has no impact as there compiler_rt is not defined for those arch in xcompile - LIBGCC_FILE_NAME_bootblock is not included, but this was not defined anywhere so this is a noop Change-Id: I64f7686894c99732d06972e7ba327061db6d7c44 Signed-off-by: Arthur Heymans <arthur@aheymans.xyz> Reviewed-on: https://review.coreboot.org/c/coreboot/+/83574 Reviewed-by: Nico Huber <nico.h@gmx.de> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
2024-08-08Makefile: Move `--no-warn-rwx-segments' into xcompileNico Huber
The parameter is not available for binutils older than 2.39. So move it to xcompile to provide backwards compatibility for a bit. Change-Id: I02982769ae2c356f037a747e85d155368bfcb730 Signed-off-by: Nico Huber <nico.h@gmx.de> Reviewed-on: https://review.coreboot.org/c/coreboot/+/83693 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Felix Singer <service+coreboot-gerrit@felixsinger.de>
2024-07-22Makefile.mk: Mark stack as not executableArthur Heymans
Suppress the warning: missing .note.GNU-stack section implies executable stack NOTE: This behaviour is deprecated and will be removed in a future version of the linker Since we don't need an executable stack this is fine. Some newer linkers like LLD even default to this. Change-Id: Ib787cc464e0924ab57575cec9fbfd1d59bdd3481 Signed-off-by: Arthur Heymans <arthur@aheymans.xyz> Reviewed-on: https://review.coreboot.org/c/coreboot/+/83560 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Felix Singer <service+coreboot-gerrit@felixsinger.de> Reviewed-by: Nico Huber <nico.h@gmx.de>
2024-07-22Makefile.mk: Remove linker warning on RWX segmentsArthur Heymans
Silence a linker warnings about segments with RWX. Having one segment for all sections is a good design choice as it makes parsing the elf into a loadable binary simpler. Change-Id: I1e0f51c69dabaea314ac45924474d446a9ab68f4 Signed-off-by: Arthur Heymans <arthur@aheymans.xyz> Reviewed-on: https://review.coreboot.org/c/coreboot/+/83559 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Felix Singer <service+coreboot-gerrit@felixsinger.de> Reviewed-by: Nico Huber <nico.h@gmx.de>
2024-07-08Makefile.mk: Fix int-shift-leftMaximilian Brune
commit 4a8d73d6a4 ("Makefile.mk: Remove bc dependency") broke the left shift, since the expr tool does not support shifting operations. This patch uses the left shift operator inside arithmetic expansion. Every posix shell should support this. Tested: Build amd/birman mainboard and check that the soft-fuse parameter doesn't change. Signed-off-by: Maximilian Brune <maximilian.brune@9elements.com> Change-Id: If3b29dae727875b0788100a2cb02c86736ffaf8c Reviewed-on: https://review.coreboot.org/c/coreboot/+/83377 Reviewed-by: Felix Singer <service+coreboot-gerrit@felixsinger.de> Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Martin L Roth <gaumless@gmail.com> Reviewed-by: Matt DeVillier <matt.devillier@gmail.com>
2024-07-08Makefile.mk: Remove bc dependencyMaximilian Brune
bc was added as dependency in commit 229e021110 ("Makefile.inc: Add left shift macro") bc is not stated as dependency in our docs (e.g. package installation). If you don't have bc installed you can easily get false positives on coreboot builds. For example you build a mainboard and coreboot tells you the build succeeded, even though you don't have bc installed. This patch is from julius comment on CB:21601. Signed-off-by: Maximilian Brune <maximilian.brune@9elements.com> Change-Id: I6ab4bc2bd7a45e84b923d4fe7ec473e6c7db2146 Reviewed-on: https://review.coreboot.org/c/coreboot/+/83313 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Felix Singer <service+coreboot-gerrit@felixsinger.de>
2024-07-03Revert "Makefile.mk: Use Walloc-size GCC option"Felix Held
This reverts commit 6ab188ee6c99b1d9924b607d7e939d91e35014ec. This breaks the build using a slightly older toolchain that doesn't know this option yet. Signed-off-by: Felix Held <felix-coreboot@felixheld.de> Change-Id: I0bdc909c0e53b5353743dca521c963bbec792f7e Reviewed-on: https://review.coreboot.org/c/coreboot/+/83311 Reviewed-by: Felix Singer <service+coreboot-gerrit@felixsinger.de> Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Elyes Haouas <ehaouas@noos.fr> Reviewed-by: Nicholas Chin <nic.c3.14@gmail.com>
2024-07-02Makefiles: Add site_local-target to run early in the buildMartin Roth
This double-colon target doesn't do anything unless it's implemented by another makefile. It's intended to be used only by the site-local makefile to allow it to run any necessary steps before the actual coreboot build begins. Signed-off-by: Martin Roth <gaumless@gmail.com> Change-Id: I01f98c9cf8375bca21ab87f9becf66a25402c758 Reviewed-on: https://review.coreboot.org/c/coreboot/+/83198 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Matt DeVillier <matt.devillier@amd.corp-partner.google.com> Reviewed-by: Felix Held <felix-coreboot@felixheld.de>
2024-07-01Makefile.mk: Use Wcast-function-type GCC optionElyes Haouas
Change-Id: I25415d7fd82879889ffaa1bb534ad5d0b174854e Signed-off-by: Elyes Haouas <ehaouas@noos.fr> Reviewed-on: https://review.coreboot.org/c/coreboot/+/82736 Reviewed-by: Felix Singer <service+coreboot-gerrit@felixsinger.de> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
2024-07-01Makefile.mk: Use Walloc-size GCC optionElyes Haouas
Change-Id: Ia26dcf097db125a5a734660d08d875459179241b Signed-off-by: Elyes Haouas <ehaouas@noos.fr> Reviewed-on: https://review.coreboot.org/c/coreboot/+/82734 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Felix Singer <service+coreboot-gerrit@felixsinger.de>
2024-06-29Makefile.mk: Use one line per *_common flagFelix Singer
Use one line per *_common flag like it's done elsewhere in the tree. It makes the list of options more readable. Change-Id: I33c500e6eb74daf1e66c2b5e07b50f81c0f4587d Signed-off-by: Felix Singer <felixsinger@posteo.net> Reviewed-on: https://review.coreboot.org/c/coreboot/+/83226 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Elyes Haouas <ehaouas@noos.fr> Reviewed-by: Maximilian Brune <maximilian.brune@9elements.com>
2024-06-24Makefile.mk: Fix inclusion of site-local/Makefile.incWerner Zeh
In commit 854dd9a5d1153fbb7ace2a7619bb98d024e284ce (Makefile.mk: Put site-local path first) the inclusion of site-local/Makefile.inc was moved to the first place. Unfortunately, the very next line where subdirs-y is modified resets the variable instead of extending it which overwrites the inclusion of site-local/Makefile.inc. This breaks setups where site-local/Makefile.inc is required. This patch fixes it. Change-Id: I36ad1aca5742869c84e2fb556f898f896c6f037a Signed-off-by: Werner Zeh <werner.zeh@siemens.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/83190 Reviewed-by: Angel Pons <th3fanbus@gmail.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Felix Singer <service+coreboot-gerrit@felixsinger.de> Reviewed-by: Elyes Haouas <ehaouas@noos.fr> Reviewed-by: Michał Kopeć <michal.kopec@3mdeb.com>
2024-06-21Makefile.mk: Put site-local path firstNikolai Vyssotski
"site-local" Makfile(s) may need to override some of the macros/paths used elsewhere in src/* Makefiles. If we include it last src/* Makefile.mk will have already been processed. MAINBOARD_BLOBS_DIR is an example where the path needs to be overwritten in site-local requiring it to be included first before src/mainboard/* Makefile.mk is processed. Change-Id: I8ea865cd73aba5092a628b0422e5c4121b32fb4d Signed-off-by: Nikolai Vyssotski <nikolai.vyssotski@amd.corp-partner.google.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/68799 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Felix Held <felix-coreboot@felixheld.de>
2024-06-20cbfstool: Read XIP stage alignment requirements from ELFArthur Heymans
On x86_64 romstage can contain page tables and a page table pointer which have an larger alignment requirement of 4096. Instead of hardcoding it, read if from the ELF phdrs. Change-Id: I94e4a4209b7441ecb2966a1342c3d46625771bb8 Signed-off-by: Arthur Heymans <arthur@aheymans.xyz> Reviewed-on: https://review.coreboot.org/c/coreboot/+/82102 Reviewed-by: Shuo Liu <shuo.liu@intel.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Jérémy Compostella <jeremy.compostella@intel.com> Reviewed-by: Julius Werner <jwerner@chromium.org>
2024-06-03Revert "Makefile: Warn if flexible array members are not at the end"Elyes Haouas
This reverts commit f4acef92. Reason for revert: '-Wflex-array-member-not-at-end' is new command option came with GCC-14. older versions will not support it. Change-Id: I179d0bc0db3e863645ae4c87e1534c5c20025dfb Signed-off-by: Elyes Haouas <ehaouas@noos.fr> Reviewed-on: https://review.coreboot.org/c/coreboot/+/82758 Reviewed-by: Nico Huber <nico.h@gmx.de> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
2024-06-03Revert "tree: Use Wcalloc-transposed-args command option"Elyes Haouas
This reverts commit b3db3abd6311924930f3250c9f9fc3157fbbf7da. Reason for revert: `Wcalloc-transposed-args` is new command option came with GCC-14. older versions will not support it. Change-Id: I74ef8de1f7d38e1e0519c3b41e79fd9b11d8e16f Signed-off-by: Elyes Haouas <ehaouas@noos.fr> Reviewed-on: https://review.coreboot.org/c/coreboot/+/82759 Reviewed-by: Nico Huber <nico.h@gmx.de> Reviewed-by: Angel Pons <th3fanbus@gmail.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
2024-05-29tree: Use Wcalloc-transposed-args command optionElyes Haouas
GCC-14 documentation says "The first argument to calloc is documented to be number of elements in array, while the second argument is size of each element, so calloc(n, sizeof (int)) is preferred over calloc(sizeof(int), n)." Change-Id: I77b6f4d2eda487b087ba5665b588999633c33e8d Signed-off-by: Elyes Haouas <ehaouas@noos.fr> Reviewed-on: https://review.coreboot.org/c/coreboot/+/82658 Reviewed-by: Felix Singer <service+coreboot-gerrit@felixsinger.de> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
2024-05-26Makefile: Warn if flexible array members are not at the endElyes Haouas
Change-Id: Ib704f7659d3b431ce7eebb4432c5b1a4272de3d2 Signed-off-by: Elyes Haouas <ehaouas@noos.fr> Reviewed-on: https://review.coreboot.org/c/coreboot/+/77147 Reviewed-by: Maximilian Brune <maximilian.brune@9elements.com> Reviewed-by: Felix Singer <service+coreboot-gerrit@felixsinger.de> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
2024-04-12Makefile.mk: Account for large code model sections in cbfs_structArthur Heymans
Starting with version 18 LLVM puts code and data generated with -ffunction-section -mcmodel=large inside sections with an 'l' prefix. This would now also pick up const data in .rodata. Change-Id: Ie07779ef548337772183ffe2d642f971d8cceae7 Signed-off-by: Arthur Heymans <arthur@aheymans.xyz> Reviewed-on: https://review.coreboot.org/c/coreboot/+/81777 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
2024-04-04Makefile.mk: Also add -libs to bootblock when !SEPARATE_ROMSTAGEArthur Heymans
Signed-off-by: Arthur Heymans <arthur@aheymans.xyz> Change-Id: I18bf67cae7af90a92a030e552af6dc6b134a8357 Reviewed-on: https://review.coreboot.org/c/coreboot/+/79575 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Martin L Roth <gaumless@gmail.com>
2024-04-01Makefile.mk: make the overlapped error message more informativeRonald G Minnich
Currently, if something is overlapped, you get this: ERROR: Ramstage region _ramstage overlapped by: fallback/payload fallback/opensbi This change prints out the start and end of the sections. Change-Id: Ica8c05b63ed9bbd28e2d3daa4dc7c2f9d8da3f55 Signed-off-by: Ronald G Minnich <rminnich@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/81544 Reviewed-by: Maximilian Brune <maximilian.brune@9elements.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
2024-03-21Makefile.mk: Enable string-compare command optionElyes Haouas
Change-Id: I7b05b6dd8f1de8689bfcc6825beb728111f6e54a Signed-off-by: Elyes Haouas <ehaouas@noos.fr> Reviewed-on: https://review.coreboot.org/c/coreboot/+/81184 Reviewed-by: Martin L Roth <gaumless@gmail.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
2024-03-19Makefile.mk: Include build/dsdt.d at the same time as DEPENDENCIESNicholas Chin
Instead of including the generated dependency file during the evaluation of asl_template, add it to the DEPENDENCIES variable so that it is included at the same time as the rest of the .d files in the top level Makefile. This makes the handling of .d files cleaner as all of them are processed in the same way. Tracking all of them in a single variable also prevents any from being missed if any post-processing is performed on them, such as running them through the fixdep utility from the Linux kernel project to replace the config.h dependency with only the configs that are used. This should be safe since asl_template is evaluated while calling includemakefiles, which is occurs before the files in DEPENDENCIES are included. TEST: 1. Build dell/e6400 2. Run `touch src/mainboard/dell/e6400/dsdt.asl` (defined as a prerequisite of build/dsdt.aml in build/dsdt.d) 3. Run `make --debug=b` 4. Verify that dsdt.aml was rebuilt due dsdt.asl being newer than target Change-Id: Ie8271d1e172395917f2859c8bbfd2041ddc572ca Signed-off-by: Nicholas Chin <nic.c3.14@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/80383 Reviewed-by: Nico Huber <nico.h@gmx.de> Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Martin L Roth <gaumless@gmail.com>
2024-03-15treewide: Move stdlib.h to commonlibMaximilian Brune
This patch moves commonlib/stdlib.h -> commonlib/bsd/stdlib.h, since all code is BSD licensed anyway. It also moves some code from libpayloads stdlib.h to commonlib/bsd/stdlib.h so that it can be shared with coreboot. This is useful for a subsequent commit that adds devicetree.c into commonlib. Also we don't support DMA on arm platforms in coreboot (only libpayload) therefore `dma_malloc()` has been removed and `dma_coherent()` has been moved to architecture specific functions. Any architecture that tries to use `dma_coherent()` now will get a compile time error. In order to not break current platforms like mb/google/herobrine which make use of the commonlib/storage/sdhci.c controller which in turn uses `dma_coherent` a stub has been added to arch/arm64/dma.c. Signed-off-by: Maximilian Brune <maximilian.brune@9elements.com> Change-Id: I3a7ab0d1ddcc7ce9af121a61b4d4eafc9e563a8a Reviewed-on: https://review.coreboot.org/c/coreboot/+/77969 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
2024-01-26util: Rename Makefiles from .inc to .mkMartin Roth
The .inc suffix is confusing to various tools as it's not specific to Makefiles. This means that editors don't recognize the files, and don't open them with highlighting and any other specific editor functionality. This issue is also seen in the release notes generation script where Makefiles get renamed before running cloc. Signed-off-by: Martin Roth <gaumless@gmail.com> Change-Id: I434940ebb46853980596f7ad55d27a62c90280fa Reviewed-on: https://review.coreboot.org/c/coreboot/+/80123 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Felix Singer <service+coreboot-gerrit@felixsinger.de> Reviewed-by: Felix Held <felix-coreboot@felixheld.de>
2024-01-24Makefiles: Rename top-level Makefiles from .inc to .mkMartin Roth
The .inc suffix is confusing to various tools as it's not specific to Makefiles. This means that editors don't recognize the files, and don't open them with highlighting and any other specific editor functionality. This issue is also seen in the release notes generation script where Makefiles get renamed before running cloc. The rest of the Makefiles will be renamed in following commits. Signed-off-by: Martin Roth <gaumless@gmail.com> Change-Id: Idaf69c6871d0bc1ee5e2e53157b8631c55eb3db9 Reviewed-on: https://review.coreboot.org/c/coreboot/+/80063 Reviewed-by: Felix Singer <service+coreboot-gerrit@felixsinger.de> Reviewed-by: Maximilian Brune <maximilian.brune@9elements.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Nico Huber <nico.h@gmx.de>