summaryrefslogtreecommitdiff
path: root/Makefile
AgeCommit message (Collapse)Author
2018-09-25Makefile: Use -fno-strict-aliasing globallyBin Meng
The -fstrict-aliasing option is implicitly enabled at levels -O2, -O3, -Os by GCC. This option allows the compiler to assume the strictest aliasing rules applicable to the language being compiled. For example, the practice of reading from a different union member than the one most recently written to (called "type-punning") is common. In this case, "type-punning" only works if the memory is accessed through the union type, but might not work by taking the address, casting the resulting pointer and dereferencing the result, which is an undefined behavior per the "strict aliasing rules". GCC's -Wstrict-aliasing (included in -Wall) option does not catch all cases, but does attempt to catch the more common pitfalls. So there are cases that GCC does not report but the codes are violating the "strict aliasing rules". Given lots of codes that may be written to rely on "type-punning", and Linux kernel disables it by -fno-strict-aliasing globally, since U-Boot currently does this on nds32/riscv/x86 builds only, extend this for all architecture builds. Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Reviewed-by: Tom Rini <trini@konsulko.com> Reviewed-by: Simon Glass <sjg@chromium.org>
2018-09-20mtd: move NAND files into a raw/ subdirectoryMiquel Raynal
NAND flavors, like serial and parallel, have a lot in common and would benefit to share code. Let's move raw (parallel) NAND specific code in a raw/ subdirectory, to ease the addition of a core file in nand/ and the introduction of a spi/ subdirectory specific to SPI NANDs. Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
2018-09-15common: add spl/u-boot-spl.hex targetDalon Westergreen
Some devices, namely Intel's stratix10 SoC, require u-boot-spl in a hex format. This patch adds spl/u-boot-spl.hex as a possible target. Signed-off-by: Dalon Westergreen <dwesterg@gmail.com>
2018-09-10Prepare v2018.09Tom Rini
Signed-off-by: Tom Rini <trini@konsulko.com>
2018-09-03Prepare v2018.09-rc3Tom Rini
Signed-off-by: Tom Rini <trini@konsulko.com>
2018-08-20Makefile: Don't generate position independent codeAndy Shevchenko
Since gcc-8 the --enable-default-pie starts producing code which assembler can't translate in case of U-Boot. The build fails with {standard input}: Assembler messages: {standard input}:21100: Error: junk at end of line, first unrecognized character is `@' {standard input}:21120: Error: junk at end of line, first unrecognized character is `@' and so on. This is usually the case for x86 platform because in many cases it uses host compiler from the Linux distributions, where PIE is enabled by default. Previously (gcc-7 and earlier) that was a potential issue due to absence of constructions like .long end.5561@gotoff-start.5558@gotoff which are a cause of above error messages in gcc-8. Fix all these by disabling PIE on Makefile level. Reported-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Suggested-by: Mika Westerberg <mika.westerberg@linux.intel.com> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Tested-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Tested-by: Bin Meng <bmeng.cn@gmail.com>
2018-08-13Prepare v2018.09-rc2Tom Rini
Signed-off-by: Tom Rini <trini@konsulko.com>
2018-07-30Prepare v2017.09-rc1Tom Rini
Signed-off-by: Tom Rini <trini@konsulko.com>
2018-07-27Merge git://git.denx.de/u-boot-fsl-qoriqTom Rini
2018-07-26tegra: Indicate that binman makes all three output filesSimon Glass
Use GNU make pattern rules to indicate that a single run of binman produces all three Tegra output files. The avoids make running binman three times (perhaps in parallel) and those instances inteferring with each other. See http://patchwork.ozlabs.org/patch/944611/ for the bug report. Signed-off-by: Simon Glass <sjg@chromium.org> Tested-by: Stephen Warren <swarren@nvidia.com>
2018-07-26spl: Add option SPL_PAYLOADYork Sun
Some legacy boards use RAW image for SPL boot. Add Kconfig option SPL_PAYLOAD to set alternative image. Signed-off-by: York Sun <york.sun@nxp.com> Reviewed-by: Tom Rini <trini@konsulko.com>
2018-07-26Makefile: Fix 'clean' targetTom Rini
Now that we have removed the DocBook files we need to not try and clean that directory. Reported-by: ericywl <midnight2903@gmail.com> Reported-by: Jagan Teki <jagan@amarulasolutions.com> Fixes: 78a88f7930be ("doc: Replace DocBook with sphinx-based docs") Signed-off-by: Tom Rini <trini@konsulko.com>
2018-07-23doc: Replace DocBook with sphinx-based docsMario Six
The Linux kernel moved to sphinx-based documentation and got rid of the DocBook based documentation quite a while ago. Hence, the DocBook documentation for U-Boot should be converted as well. To achieve this, import the necessary files from Linux v4.17, and convert the current DocBook documentation (three files altogether) to sphinx/reStructuredText. For now, all old DocBook documentation was merged into a single handbook, tentatively named "U-Boot Hacker Manual". For some source files, the documentation style was changed to comply with kernel-doc; no functional changes were applied. Signed-off-by: Mario Six <mario.six@gdsys.cc>
2018-07-10Makefile: drop mention of *.cfgtmpBaruch Siach
Since commit f916757300 (imx: Create distinct pre-processed mkimage config files), *.cfgtmp files are no longer generated. There is no need to remove them on the 'clean' target anymore. Rename the .gitignore glob to *.cfgout. Cc: Trent Piepho <tpiepho@impinj.com> Signed-off-by: Baruch Siach <baruch@tkos.co.il>
2018-07-10Makefile: drop unused cpp_cfg macroBaruch Siach
Commit e19b0fb4851f (kbuild: generate u-boot.cfg as a byproduct of include/autoconf.mk) removed the use of the cpp_cfg macro in Makefile, but forgot to remove its definition. Cc: Masahiro Yamada <yamada.masahiro@socionext.com> Signed-off-by: Baruch Siach <baruch@tkos.co.il> Reviewed-by: Masahiro Yamada <yamada.masahiro@socionext.com>
2018-07-09Prepare v2018.07Tom Rini
Signed-off-by: Tom Rini <trini@konsulko.com>
2018-07-02Prepare v2018.07-rc3Tom Rini
Signed-off-by: Tom Rini <trini@konsulko.com>
2018-06-21Makefile: Ensure we build with -std=gnu11Tom Rini
As many targets are now commonly built with gcc-6 or later (which defaults to a newer C standard than older compilers), certain C constructs are now being used as they produce more readable code. And while all compilers that we support building with support the C11 standard (and GNU11) they do not default to that standard. Ensure that we pass along -std=gnu11 when building. Signed-off-by: Tom Rini <trini@konsulko.com>
2018-06-19Prepare v2018.07-rc2Tom Rini
Signed-off-by: Tom Rini <trini@konsulko.com>
2018-06-04Prepare v2018.07-rc1Tom Rini
Signed-off-by: Tom Rini <trini@konsulko.com>
2018-06-03Makefile: clean should delete *.soHeinrich Schuchardt
Files *.so are generated files. So the clean target should delete them. Reported-by: Alexander Graf <agraf@suse.de> Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Reviewed-by: Simon Glass <sjg@chromium.org> Signed-off-by: Alexander Graf <agraf@suse.de>
2018-06-03Makefile: clean should delete *.efiHeinrich Schuchardt
Files *.efi are generated files. So the clean target should delete them. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Signed-off-by: Alexander Graf <agraf@suse.de>
2018-05-31kconfig: re-sync with Linux 4.17-rc4Eugeniu Rosca
Align Kconfig to Linux 4.17-rc4 with minimal impact on non-kconfig files. Previous Kconfig sync was done by commit bf7ab1e70fd762 ("kconfig: re-sync with Linux 4.10") and it achieved almost perfect alignment with a few (intended) exceptions, caused by below U-boot commits: [A] v2015.04 5f9eb2207500 ("kbuild: remove scripts/multiconfig.sh") [B] v2015.07 20c20826efab ("Kconfig: Enable usage of escape char '\' in string values") [C] v2016.01 da58dec86616 ("Various Makefiles: Add SPDX-License-Identifier tags") [D] v2016.03 5b8031ccb4ed ("Add more SPDX-License-Identifier tags") [E] v2016.03 192bc6948b02 ("Fix GCC format-security errors and convert sprintfs.") Here is the list of Kconfig commits which followed the v4.10 alignment: [F] v2018.01 0931ed3c0d0f ("kconfig/symbol.c: use correct pointer type argument for sizeof") [G] v2018.03 1414e09b4f25 ("kconfig: revert change that was not needed for -Wformat-security") [H] v2018.05 83d290c56fab ("SPDX: Convert all of our single license tags to Linux Kernel style") Commit [F] was subsequently applied to Linux kernel as commit [I] with the same patch id, so it won't contribute to further misalignment. [I] v4.15-rc1 88127dae6ed9 ("kconfig/symbol.c: use correct pointer type argument for sizeof") Commit [G] is a Kconfig-specific revert of commit [E]. Commit [H] relocated and reformatted the license doing no functional change. In summary, the only functional change that makes U-boot Kconfig diverge from Linux Kconfig is commit [B]. After a brief analysis, the purpose of [B] seems to be placing "\n" literals in string symbols like CONFIG_AUTOBOOT_PROMPT="autoboot in %d seconds\n" in order to pass them directly to printf and expect correct output at runtime. Currently, Linux doesn't seem to have this requirement, so for the moment [B] looks like a U-boot specific feature/fix. From point of view of further Kconfig alignment and backporting efforts, it is highly desired that commits like [B] are propagated to Linux and any Kconfig fixes/features are contributed to Linux kernel first. This specific Kconfig re-sync just keeps [B] in place. Contrary to 4.10 Kconfig re-sync (which achieves zero non-kconfig changes), 4.17-rc4 re-sync does some amount of updates in Kbuild (striving to keep them at minimum), due to a number of reasons: * Kbuild is affected by the removal of Kconfig "*shipped" files and now requires flex and bison pre-installed on the host. * PYTHON{2,3} variables are defined in top-level Makefile as prerequisite for running the newly developed Kconfig unit tests. * silentoldconfig becomes an "internal implementation detail" deprecated for external use, being renamed to syncconfig. The exact non-kconfig files touched by this commit are: $ git show --format="" --stat -- ':!scripts/kconfig' .gitignore | 2 ++ Makefile | 9 +++++++-- scripts/Makefile.build | 11 +++++++++++ scripts/Makefile.lib | 41 ++++++++++++----------------------------- The imported Linux commits touching the above files are: c054be10ffdbd5 ("remove gperf left-overs from build system") 73a4f6dbe70a1b ("kbuild: add LEX and YACC variables") 033dba2ec06c47 ("kbuild: prepare to remove C files pre-generated by flex and bison") eea199b445f64c ("kbuild: remove unnecessary LEX_PREFIX and YACC_PREFIX") e71de5ee08dcb0 ("kbuild: remove remaining use of undefined YACC_PREFIX") d59fbbd09d5d6b ("kbuild: replace hardcoded bison in cmd_bison_h with $(YACC)") 911a91c39cabcb H ("kconfig: rename silentoldconfig to syncconfig") 59889300274569 (".gitignore: move *.lex.c *.tab.[ch] patterns to the top-level .gitignore") 9a8dfb394c0467 ("kbuild: clean up *.lex.c and *.tab.[ch] patterns from top-level Makefile") 833e622459432e H ("genksyms: generate lexer and parser during build instead of shipping") b23d1a241f4eb4 H ("kbuild: add %.lex.c and %.tab.[ch] to 'targets' automatically") e9781b52d4e0e3 H ("kbuild: add PYTHON2 and PYTHON3 variables") The commits marked with 'H' are assessed as "hard" (build will fail) prerequisites and the rest of them are assessed as "soft" prerequisites for the re-sync. In spite of relatively high number of non-H commits, they belong to this Kconfig update topic-wise and decrease the number of cherry pick conflicts for many commits in this series. Additional effort can be put in eliminating the soft prerequisites, if really needed. The commits which contributed to this Kconfig re-sync are listed below. Whenever a conflict resolution has been performed (mostly by hand, but sometimes automatically by git), it is revealed by the '!' sign in the second column, which means a patch id mismatch between Linux and U-boot commits: 9be3213b14d44f ("gconfig: remove misleading parentheses around a condition") ff85a1a80e0034 ("kconfig: Check for libncurses before menuconfig") ad8181060788c8 ("kconfig: fix sparse warnings in nconfig") cb77f0d623ff33 ! ("scripts: Switch to more portable Perl shebang") bb3290d91695bb ! ("Remove gperf usage from toolchain") c054be10ffdbd5 ("remove gperf left-overs from build system") b24413180f5600 ! ("License cleanup: add SPDX GPL-2.0 license identifier to files with no license") 9059a3493efea6 ! ("kconfig: fix relational operators for bool and tristate symbols") 2c37e08464a850 ("kconfig: Warn if choice default is not in choice") 33ca1a24866373 ("kconfig: Document the 'menu' struct") 52aede4ba5efd1 ("kconfig: Document the 'symbol' struct") c873443430ebd1 ("kconfig: Sync zconf.y with zconf.tab.c_shipped") 9a826842ff2fbd ("kconfig: Rename menu_check_dep() to rewrite_m()") fa8cedaef814ce ("kconfig: Clarify expression rewriting") f77850d3fe0c96 ("kconfig: Clean up modules handling and fix crash") e3b03bf29d6b99 ("kconfig: display recursive dependency resolution hint just once") 73a4f6dbe70a1b ! ("kbuild: add LEX and YACC variables") 033dba2ec06c47 ! ("kbuild: prepare to remove C files pre-generated by flex and bison") 29c833061c1d8c ("kconfig: generate lexer and parser during build instead of shipping") 26e47a3c11a25c ("kconfig: Don't leak symbol names during parsing") 24161a6711c945 ("kconfig: Don't leak 'source' filenames during parsing") bc28fe1d5ede88 ("kconfig: Don't leak 'option' arguments during parsing") 0724a7c32a54e3 ("kconfig: Don't leak main menus during parsing") ae7440ef0c8013 ("kconfig: Fix automatic menu creation mem leak") 5b1374b3b3c2fc ("kconfig: Fix expr_free() E_NOT leak") 7cf33f88e29410 ("kconfig: Fix choice symbol expression leak") 05cccce580456d ("kconfig: Document automatic submenu creation code") 0735f7e5def2ab ("kconfig: Document important expression functions") df60f4b92d3d0b ("kconfig: Remove menu_end_entry()") b92d804a51796b ("kconfig: drop 'boolean' keyword") 6479f327dea60d ("kconfig: Warn if there is more than one help text") 52e58a3caeba5d ("kconfig: make input_mode static") 5a3dc717b3c785 ("kconfig: make xfgets() really static") 84dd95d4f87a0d ("kconfig: make conf_unsaved a local variable of conf_read()") 765f4cdef6f80d ("kconfig: use default 'yy' prefix for lexer and parser") eea199b445f64c ("kbuild: remove unnecessary LEX_PREFIX and YACC_PREFIX") e71de5ee08dcb0 ("kbuild: remove remaining use of undefined YACC_PREFIX") d59fbbd09d5d6b ! ("kbuild: replace hardcoded bison in cmd_bison_h with $(YACC)") 3e41ba05b6d60c ("kconfig: Document SYMBOL_OPTIONAL logic") d3465af60f4471 ("kconfig: Clarify choice dependency propagation") 9d1a9e8bc18bea ("kconfig: Document 'if' flattening logic") b53688014e3325 ("kconfig: Clarify menu and 'if' dependency propagation") d0fd0428ecf04b ("kconfig: fix make xconfig when gettext is missing") 312ee68752faaa ("kconfig: announce removal of oldnoconfig if used") 1ccb27143360bd ("kconfig: make "Selected by:" and "Implied by:" readable") cedd55d49dee94 ! ("kconfig: Remove silentoldconfig from help and docs; fix kconfig/conf's help") 1b9eda2e4892cb ("kconfig: Warn if help text is blank") cb67ab2cd2b8ab ("kconfig: do not write choice values when their dependency becomes n") 4f208f392103e8 ("kconfig: show '?' prompt even if no help text is available") cd58a91def2acc ("kconfig: remove 'config*' pattern from .gitignnore") d2a04648a5dbc3 ("kconfig: remove check_stdin()") f3ff6fb5db68bc ("kconfig: echo stdin to stdout if either is redirected") 9e3e10c725360b ("kconfig: send error messages to stderr") d717f24d8c6808 ("kconfig: add xrealloc() helper") 523ca58b7db2e3 ("kconfig: remove const qualifier from sym_expand_string_value()") cd81fc82b93fa4 ("kconfig: add xstrdup() helper") f4bc1eefc1608e ("kconfig: set SYMBOL_AUTO to the symbol marked with defconfig_list") bf0bbdcf100322 ("kconfig: Don't leak choice names during parsing") 1a90ce36c6eff6 ("kconfig: Update ncurses package names for menuconfig") 5ae6fcc4bb82bd ("kconfig: fix line number in recursive inclusion error message") 07a422bb213adb ! ("kbuild: restore autoksyms.h touch to the top Makefile") 9a47ceec543bfb ("kconfig: clean-up reverse dependency help implementation") d9119b5925a03b ("kconfig: Print reverse dependencies in groups") f467c5640c29ad ("kconfig: only write '# CONFIG_FOO is not set' for visible symbols") 59a80b5e892dde ("kconfig: do not call check_conf() for olddefconfig") 4bb3a5b085cd6f ("kconfig: remove unneeded input_mode test in conf()") 99f0b6578bab44 ("kconfig: remove redundant input_mode test for check_conf() loop") 2aad9b89621386 ("kconfig: hide irrelevant sub-menus for oldconfig") 81d2bc2273052e ("kconfig: invoke oldconfig instead of silentoldconfig from local*config") 911a91c39cabcb ! ("kconfig: rename silentoldconfig to syncconfig") 2a61625835c7c8 ! ("kconfig: remove redundant streamline_config.pl prerequisite") 022a4bf6b59dfd ("kconfig: tests: add framework for Kconfig unit testing") 1903c511905984 ("kconfig: tests: add basic choice tests") 49ac3c0c3aa3b7 ("kconfig: tests: test automatic submenu creation") b76960c0f6b25d ("kconfig: tests: test if new symbols in choice are asked") 930c429a656fdb ("kconfig: tests: check unneeded "is not set" with unmet dependency") ee236610653ede ("kconfig: tests: check visibility of tristate choice values in y choice") beaaddb625400e ("kconfig: tests: test defconfig when two choices interact") 3e4888c2e3d77d ("kconfig: tests: test randconfig for choice in choice") 29c434f367ea7b ("kconfig: tests: test if recursive dependencies are detected") e2c75e7667c737 ("kconfig: tests: test if recursive inclusion is detected") f622f827958162 ("kconfig: warn unmet direct dependency of tristate symbols selected by y") f8f69dc0b4e070 ("kconfig: make unmet dependency warnings readable") 26561514cc9def ("kconfig: do not include both curses.h and ncurses.h for nconfig") 32a94b8b0c3e5a ("kconfig: remove duplicated file name and lineno of recursive inclusion") 379a8eb8eb1a55 ("kconfig: detect recursive inclusion earlier") 18492685e479fd ("kconfig: use yylineno option instead of manual lineno increments") 59889300274569 ! (".gitignore: move *.lex.c *.tab.[ch] patterns to the top-level .gitignore") 9a8dfb394c0467 ! ("kbuild: clean up *.lex.c and *.tab.[ch] patterns from top-level Makefile") 833e622459432e ! ("genksyms: generate lexer and parser during build instead of shipping") b23d1a241f4eb4 ! ("kbuild: add %.lex.c and %.tab.[ch] to 'targets' automatically") 17baab68d337a0 ("kconfig: extend output of 'listnewconfig'") e9781b52d4e0e3 ! ("kbuild: add PYTHON2 and PYTHON3 variables") The current Kconfig update generates below build-time warnings: YACC scripts/dtc/dtc-parser.tab.h scripts/dtc/dtc-parser.y: warning: 3 shift/reduce conflicts [-Wconflicts-sr] YACC scripts/dtc/dtc-parser.tab.c scripts/dtc/dtc-parser.y: warning: 3 shift/reduce conflicts [-Wconflicts-sr] This seems to happen because the Kbuild updates apparently didn't make room for both "*shipped"-based builds and flex/bison-based builds. A similar problem has been reported for genksyms parser in v4.17-rc1 commit 833e622459432e ("genksyms: generate lexer and parser during build instead of shipping"). I have figured out empirically that the warnings are healed after updating the in-tree U-boot DTC to upstream v1.4.6-9, same as done by Linux v4.17-rc1 commit 9130ba88464032 ("scripts/dtc: Update to upstream version v1.4.6-9-gaadd0b65c987"). Whether fixing the DTC-related yacc warnings should be done together with the Kconfig re-sync, I would like to hear from community. My testing was limited to: - make defconfig all - make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- r8a7795_ulcb_defconfig all - comparing .config before and after the re-sync - running the newly imported Kconfig unit tests as seen below: $ make testconfig Tested-by: Petr Vorel <petr.vorel@gmail.com> ============================= test session starts ============================= scripts/kconfig/tests/auto_submenu/__init__.py::test PASSED [ 7%] scripts/kconfig/tests/choice/__init__.py::test_oldask0 PASSED [ 14%] scripts/kconfig/tests/choice/__init__.py::test_oldask1 PASSED [ 21%] scripts/kconfig/tests/choice/__init__.py::test_allyes PASSED [ 28%] scripts/kconfig/tests/choice/__init__.py::test_allmod PASSED [ 35%] scripts/kconfig/tests/choice/__init__.py::test_allno PASSED [ 42%] scripts/kconfig/tests/choice/__init__.py::test_alldef PASSED [ 50%] scripts/kconfig/tests/choice_value_with_m_dep/__init__.py::test PASSED [ 57%] scripts/kconfig/tests/err_recursive_inc/__init__.py::test PASSED [ 64%] scripts/kconfig/tests/inter_choice/__init__.py::test PASSED [ 71%] scripts/kconfig/tests/new_choice_with_dep/__init__.py::test PASSED [ 78%] scripts/kconfig/tests/no_write_if_dep_unmet/__init__.py::test PASSED [ 85%] scripts/kconfig/tests/rand_nested_choice/__init__.py::test PASSED [ 92%] scripts/kconfig/tests/warn_recursive_dep/__init__.py::test PASSED [100%] ========================== 14 passed in 0.34 seconds ========================== Signed-off-by: Eugeniu Rosca <erosca@de.adit-jv.com> Reviewed-by: Masahiro Yamada <yamada.masahiro@socionext.com> Tested-by: Petr Vorel <petr.vorel@gmail.com>
2018-05-23Makefile: adopt --std=gnu11 for HOSTCFLAGS on LinuxPhilipp Tomsich
Following the conversion of the SPDX license tags, a number of files compiled with -pedantic now generate warnings similar to the following for using C99-style '//' comments in ISO C90 code: tools/gen_eth_addr.c:1:1: warning: C++ style comments are not allowed in ISO C90 // SPDX-License-Identifier: GPL-2.0+ ^ The SPDX comment-style change means that these files have adopted C99, so need to change the language-standard to --std=gnu99 or --std=gnu11 to let the compiler know this. As we now require GCC 6 or newer for the cross-compiler, the project has implicitly moved the project to GNU11: let older GCC versions on various Linux distros know to treat our host tools as GNU11 as well. References: commit 83d290c56fab ("SPDX: Convert all of our single license tags to Linux Kernel style") Signed-off-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com> Reviewed-by: Tom Rini <trini@konsulko.com>
2018-05-07Prepare v2018.05Tom Rini
Signed-off-by: Tom Rini <trini@konsulko.com>
2018-05-07SPDX: Convert all of our single license tags to Linux Kernel styleTom Rini
When U-Boot started using SPDX tags we were among the early adopters and there weren't a lot of other examples to borrow from. So we picked the area of the file that usually had a full license text and replaced it with an appropriate SPDX-License-Identifier: entry. Since then, the Linux Kernel has adopted SPDX tags and they place it as the very first line in a file (except where shebangs are used, then it's second line) and with slightly different comment styles than us. In part due to community overlap, in part due to better tag visibility and in part for other minor reasons, switch over to that style. This commit changes all instances where we have a single declared license in the tag as both the before and after are identical in tag contents. There's also a few places where I found we did not have a tag and have introduced one. Signed-off-by: Tom Rini <trini@konsulko.com>
2018-05-01Prepare v2018.05-rc3Tom Rini
Signed-off-by: Tom Rini <trini@konsulko.com>
2018-04-28kbuild: use -fmacro-prefix-map to make __FILE__ a relative pathMasahiro Yamada
The __FILE__ macro is used everywhere in U-Boot to locate the file printing the log message, such as WARN_ON(), etc. If U-Boot is built out of tree, this can be a long absolute path. This is because Kbuild runs in the objtree instead of the srctree, then __FILE__ is expanded to a file path prefixed with $(srctree)/. A brand-new option from GCC, -fmacro-prefix-map, solves this problem. If your compiler supports it, __FILE__ is the relative path from the srctree regardless of O= option. This provides more readable log, more reproducible builds, and smaller image size. [ Linux commit: a73619a845d5625079cc1b3b820f44c899618388 ] Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> Reviewed-by: Simon Glass <sjg@chromium.org>
2018-04-27Makefile: Update clang warning disables from LinuxTom Rini
Re-sync the logic about which clang warnings to disable from v4.17-rc1. Note that we don't disable all of the same ones as for now we haven't run into any cases of warnings from clang in code from upstream Linux. Signed-off-by: Tom Rini <trini@konsulko.com>
2018-04-16Prepare v2018.05-rc2Tom Rini
Signed-off-by: Tom Rini <trini@konsulko.com>
2018-04-15Merge git://git.denx.de/u-boot-imxTom Rini
Signed-off-by: Tom Rini <trini@konsulko.com>
2018-04-15Makefile: always preserve output for images that can contain HAB BlocksRasmus Villemoes
The current makefile logic disables creation of the SPL.log/u-boot-ivt.img.log etc. files when V=1 is given on the command line, the rationale presumably being that the user wants and gets the information on the console. However, from general principles, I don't think a higher V= level should affect which build artifacts get generated (and certainly shouldn't produce fewer). Concretely, it's also a problem that when doing a V=1 build in a terminal, the relevant HAB blocks lines easily drown in all the other V=1 output. Moreover, build systems such as Yocto by default pass V=1, so in that case the information gets hidden away in the do_compile log file, making it nigh impossible to create a recipe for creating signed U-boot images - I don't want to disable V=1, because having verbose output in the log file is valuable when things go wrong, but OTOH trying to go digging in the do_compile log file (and getting exactly the right lines) is not pleasant to even think about. So change the logic so that for V=0, the mkimage output is redirected to MKIMAGEOUTPUT (which is also the current behaviour), while for any other value of V, we _additionally_ write the information to make's stdout, whatever that might be. Signed-off-by: Rasmus Villemoes <rasmus.villemoes@prevas.dk> Tested-by: Breno Lima <breno.lima@nxp.com>
2018-04-13kconfig: add CONFIG_CC_COVERAGEChristian Gmeiner
Make it possible to use gcc code coverage analysis. v1 -> v2: - Kconfig: remove not needed 'default n' - Makefile: use consistent spacing Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com> Reviewed-by: Tom Rini <trini@konsulko.com>
2018-04-06Allow providing default environment from fileRasmus Villemoes
Modifying the default environment via CONFIG_EXTRA_ENV_SETTINGS is somewhat inflexible, partly because the cpp language does not allow appending to an existing macro. This prevents reuse of "environment fragments" for different boards, which in turn makes maintaining that environment consistently tedious and error-prone. This implements a Kconfig option for allowing one to define the entire default environment in an external file, which can then, for example, be generated programmatically as part of a Yocto recipe, or simply be kept in version control separately from the U-boot repository. Tested-by: Sean Nyekjaer <sean.nyekjaer@prevas.dk> Signed-off-by: Rasmus Villemoes <rasmus.villemoes@prevas.dk> Reviewed-by: Lukasz Majewski <lukma@denx.de>
2018-04-03Makefile: Disable stack-usage check for ARCAlexey Brodkin
With the most recent tools for ARC (arc-2017.09) in case of "naked" function compiler throws a warning: ---------------------------------->8----------------------------- board/synopsys/hsdk/hsdk.c: In function 'hsdk_core_init_f': board/synopsys/hsdk/hsdk.c:345:1: warning: stack usage computation not supported for this target } ^ ---------------------------------->8----------------------------- That happens because the compiler doesn't handle "naked" functions as a special case where stack calculation shouldn't be done. But for now until this is fixed in GCC to get clean buildman output we're disabling stack-usage check for ARC. See https://lists.denx.de/pipermail/u-boot/2018-April/324455.html for more background. Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com> Cc: Masahiro Yamada <yamada.masahiro@socionext.com> Cc: Tom Rini <trini@konsulko.com>
2018-04-02Prepare v2018.05-rc1Tom Rini
Signed-off-by: Tom Rini <trini@konsulko.com>
2018-03-29Makefile: Build firmware-ivt image type for HAB verification also for mx7Eran Matityahu
Create u-boot-ivt.img and u-boot-ivt.img.log when building U-Boot with SPL and Secure Boot enabled for imx7 (like it is done for imx6). See commit d21bd69b6e95ca7824941e7f527871cd5c63c7f7 for more info. Signed-off-by: Eran Matityahu <eran.m@variscite.com>
2018-03-13ARM: sunxi: Build u-boot-sunxi-with-spl.bin on ARM64 as wellTuomas Tynkkynen
In README.sunxi64 we tell the user how to optionally create u-boot-sunxi-with-spl.bin by manually running cat. Instead, have the build system create the file automatically just like it does for 32-bit sunxi boards. Signed-off-by: Tuomas Tynkkynen <tuomas@tuxera.com> Reviewed-by: Andre Przywara <andre.przywara@arm.com> Acked-by: Maxime Ripard <maxime.ripard@bootlin.com> Reviewed-by: Jagan Teki <jagan@openedev.com>
2018-03-13ARM: sunxi: Move u-boot-sunxi-with-spl.bin rule to MakefileTuomas Tynkkynen
We're going to need this logic for 64-bit builds as well, so move it out from under arch/arm/cpu/armv7. Signed-off-by: Tuomas Tynkkynen <tuomas@tuxera.com> Reviewed-by: Andre Przywara <andre.przywara@arm.com> Acked-by: Maxime Ripard <maxime.ripard@bootlin.com> Reviewed-by: Jagan Teki <jagan@openedev.com>
2018-03-13Prepare v2018.03Tom Rini
Signed-off-by: Tom Rini <trini@konsulko.com>
2018-03-05Prepare v2018.03-rc4Tom Rini
Signed-off-by: Tom Rini <trini@konsulko.com>
2018-02-27Makefile: add u-boot-spl.srec targetMarek Vasut
The u-boot-spl.srec is needed for some platforms, add target to generate this file. Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com> Cc: Nobuhiro Iwamatsu <iwamatsu@nigauri.org> Cc: Tom Rini <trini@konsulko.com>
2018-02-27Makefile: add u-boot-elf.srec targetMasaru Nagai
The u-boot-elf.srec is needed for some platforms, add target to generate this file. Signed-off-by: Masaru Nagai <masaru.nagai.vx@renesas.com> Signed-off-by: Hiroyuki Yokoyama <hiroyuki.yokoyama.vx@renesas.com> Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com> Cc: Hiroyuki Yokoyama <hiroyuki.yokoyama.vx@renesas.com> Cc: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
2018-02-23Makefile: Don't mess with .text section location for selected archesAlexey Brodkin
Most of architectures have .text section situated in the very beginning of U-Boot binary and thus it is very logical that CONFIG_SYS_TEXT_BASE is used on final linkage step to specify where U-Boot gets linked to. For that we pass the following construction to the LD: ---------------------------->8----------------------- xxx-ld ... -Ttext $(CONFIG_SYS_TEXT_BASE) ... ---------------------------->8----------------------- But there could be exceptions. For example: 1. In case of ARCv2 we want to put vectors table in its own section .ivt in front of .text section which means we need either add an offset to CONFIG_SYS_TEXT_BASE to compensate for .ivt or don't pass "-Ttext" to the LD at all and specify link base in linker script directly. 2. Some architectures even though have .text section in the very beginning of the U-Boot image still use different symbols to specify link-base: * NIOS2: CONFIG_SYS_MONITOR_BASE (which I really like because that exactly what makes sense - where out image starts but not beginning of its .text section which just happened to match the whole image beginning) * EXTENSA: CONFIG_SYS_TEXT_ADDR * X86: Which doesn't use CONFIG_SYS_MONITOR_BASE in case of EFI otherwise sets explicit link base in u-boot.lds I think that's good to allow for flexibility and don't require each and every architecture or even platform to specify CONFIG_SYS_TEXT_BASE as well as use it to set .text section location. So let's only pass "-Ttext xxx" for those architectures who don't set link-base explicitly in their linker scripts. This patch iaddresses comments for previously sent https://patchwork.ozlabs.org/patch/867540/. Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com> Cc: Masahiro Yamada <yamada.masahiro@socionext.com> Cc: Marek Vasut <marek.vasut@gmail.com> Cc: Max Filippov <jcmvbkbc@gmail.com> Cc: Simon Glass <sjg@chromium.org> Cc: Tom Rini <trini@konsulko.com>
2018-02-20Prepare v2018.03-rc3Tom Rini
Signed-off-by: Tom Rini <trini@konsulko.com>
2018-02-12Prepare v2018.03-rc2Tom Rini
Signed-off-by: Tom Rini <trini@konsulko.com>
2018-01-29Prepare v2018.03-rc1Tom Rini
Signed-off-by: Tom Rini <trini@konsulko.com>
2018-01-26Makefile: Add size check to the u-boot.itb make targetMaxime Ripard
The make macro to check if the binary exceeds the board size limit is not called. Make sure that is the case. Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> Reviewed-by: Jagan Teki <jagan@openedev.com>
2018-01-12Merge git://git.denx.de/u-boot-tegraTom Rini
2018-01-12Makefile: ensure DTB doesn't overflow into initial stackStephen Warren
With CONFIG_SYS_INIT_SP_BSS_OFFSET enabled, the initial (pre-relocation) stack is placed some distance after bss_start. The control DTB is appended to the U-Boot binary at bss_start. If the DTB is too large, or the SP BSS offset too small, then the initial stack could corrupt the DTB. Enhance the Makefile to check whether this is likely to occur. Signed-off-by: Stephen Warren <swarren@nvidia.com> Signed-off-by: Tom Warren <twarren@nvidia.com>