kumquat-buildroot/docs/manual
Yann E. MORIN e0e089acc4 core/pkg-kconfig: allow dependencies before configurators
Some users of kconfig need some packages to be built before their
kconfig infra be used.

For example, the linux kernel, starting with 4.16, needs flex and bison
to generate the parser code. Furthermore, starting with 4.18, it will
also need the cross-compiler before parsing the kconfig stuff, because
that calls the compiler to check its features.

Currently, this is broken, even the flex/bison ones, even though they
are listed, because there is no way to define dependencie that are
guaranteed before the (visual) configurators. For example:

    $ make distclean
    $ make menuconfig
      --> enable the linux kernel, choose a defconfig, save, exit
    $ make linux-menuconfig
    [...]
      HOSTCC  scripts/basic/fixdep
      HOSTCC  scripts/kconfig/conf.o
      YACC    scripts/kconfig/zconf.tab.c
    /bin/sh: bison: command not found
      LEX     scripts/kconfig/zconf.lex.c
    scripts/Makefile.lib:196: recipe for target 'scripts/kconfig/zconf.tab.c' failed
    make[3]: *** [scripts/kconfig/zconf.tab.c] Error 127
    make[3]: *** Waiting for unfinished jobs....
    /bin/sh: flex: command not found
    scripts/Makefile.lib:188: recipe for target 'scripts/kconfig/zconf.lex.c' failed
    make[3]: *** [scripts/kconfig/zconf.lex.c] Error 127
    Makefile:528: recipe for target 'rpc_defconfig' failed
    make[2]: *** [rpc_defconfig] Error 2
    linux/linux.mk:511: recipe for target '/home/ymorin/dev/buildroot/buildroot/output/build/linux-4.17.11/.config' failed
    make[1]: *** [/home/ymorin/dev/buildroot/buildroot/output/build/linux-4.17.11/.config] Error 2
    Makefile:79: recipe for target '_all' failed
    make: *** [_all] Error 2

So, we introduce a new type of dependencies for kconfig-based packages,
that are guaranteed to be built and installed before the (visual)
configurators are called.

Since those dependencies are phony targets and therefore always out of
date, a normal dependency would cause the .config target to be rebuilt
on each invocation of make. So we use an order-only pre-requisite, like
is done for the patch dependency.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Arnout Vandecappelle <arnout@mind.be>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Cc: Jan Kundrát <jan.kundrat@cesnet.cz>
Tested-by: Jan Kundrát <jan.kundrat@cesnet.cz>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2018-08-18 23:21:03 +02:00
..
adding-board-support.txt
adding-packages-asciidoc.txt docs/manual: document the br2-external NAME 2016-10-16 13:01:02 +02:00
adding-packages-autotools.txt
adding-packages-cargo.txt docs/manual: use SPDX short identifier for license 2018-04-05 21:06:45 +02:00
adding-packages-cmake.txt
adding-packages-conclusion.txt
adding-packages-directory.txt toolchain: merge toolchain-common.in to Config.in 2018-04-01 08:45:54 +02:00
adding-packages-generic.txt docs/manual: using a branch name as FOO_VERSION does not work 2018-05-11 23:03:21 +02:00
adding-packages-gettext.txt docs/manual: update gettext details 2017-07-05 01:37:38 +02:00
adding-packages-golang.txt package/pkg-golang: use 'build' instead of 'install' 2018-04-01 16:36:28 +02:00
adding-packages-hooks.txt manual: patches are not applied for SITE_METHOD = local 2017-07-09 17:25:48 +02:00
adding-packages-kconfig.txt core/pkg-kconfig: allow dependencies before configurators 2018-08-18 23:21:03 +02:00
adding-packages-kernel-module.txt docs/manual: refer to SPDX License List 2017-04-01 15:11:18 +02:00
adding-packages-linux-kernel-spec-infra.txt package/linux-tools: change method for including linux-tool sub-makefiles 2017-07-19 21:16:38 +02:00
adding-packages-luarocks.txt luarocks-package: lowercase the upstream name for LuaRocks 2017-03-05 22:01:39 +01:00
adding-packages-meson.txt docs/manual: document pkg-meson infra 2018-05-30 21:59:05 +02:00
adding-packages-perl.txt docs/manual: fix scancpan path 2018-06-15 10:04:45 +02:00
adding-packages-python.txt manual: update old references to support/scripts 2017-07-01 19:43:46 +02:00
adding-packages-rebar.txt
adding-packages-tips.txt docs/manual: add check-package to "Tips and tricks" 2018-04-02 00:42:59 +02:00
adding-packages-virtual.txt manual: get rid of the lists of packages 2016-09-19 19:32:59 +02:00
adding-packages-waf.txt doc/manual: document the new waf-package infra variables 2016-12-11 18:03:59 +01:00
adding-packages.txt docs/manual: add check-package to "Tips and tricks" 2018-04-02 00:42:59 +02:00
advanced.txt
appendix.txt docs/manual: add appendix about migration from older versions 2017-09-06 22:13:17 +02:00
beyond-buildroot.txt
ccache-support.txt ccache: support changing the output directory 2015-10-04 18:22:21 +02:00
common-usage.txt support/scripts/graph-depends: use colors instead of colours 2018-04-01 20:01:38 +02:00
configure-other-components.txt docs/manual: add U-Boot configuration 2015-07-19 14:47:11 +02:00
configure.txt docs/manual: drop mention of removed external toolchains 2017-06-20 22:12:54 +02:00
contribute.txt docs/manual: add check-package to "Tips and tricks" 2018-04-02 00:42:59 +02:00
customize-configuration.txt docs/manual: add U-Boot configuration 2015-07-19 14:47:11 +02:00
customize-device-permission-tables.txt
customize-directory-structure.txt docs/manual: document the br2-external NAME 2016-10-16 13:01:02 +02:00
customize-outside-br.txt docs/manual: fix BR2_EXTERNAL path typo 2017-10-15 15:47:59 +02:00
customize-packages.txt docs/manual: document the br2-external NAME 2016-10-16 13:01:02 +02:00
customize-patches.txt
customize-post-image.txt
customize-quick-guide.txt docs/manual: add U-Boot configuration 2015-07-19 14:47:11 +02:00
customize-rootfs.txt docs/manual: document BR2_ROOTFS_POST_FAKEROOT_SCRIPT 2016-07-04 15:22:57 +02:00
customize-users-tables.txt
customize.txt
debugging-buildroot.txt
developers.txt Manual: DEVELOPERS file integrity check 2017-11-08 13:20:02 +01:00
download-infra.txt
download-location.txt docs/manual: centralize recommendations about BR2_DL_DIR 2017-02-07 14:55:02 +01:00
eclipse-integration.txt
faq-troubleshooting.txt manual: remove references to host/usr paths 2017-07-05 16:06:28 +02:00
getting.txt docs/manual: misc improvements to Vagrant usage documentation 2016-02-08 13:33:43 +01:00
how-buildroot-works.txt
introduction.txt
known-issues.txt docs: known issues no longer valid 2017-07-01 12:56:21 +02:00
legal-notice.txt docs/manual: refer to SPDX License List 2017-04-01 15:11:18 +02:00
make-tips.txt core: enhance printvars 2017-03-29 21:55:14 +02:00
makedev-syntax.txt makedevs: add capability support 2016-06-30 12:13:38 +02:00
makeusers-syntax.txt
manual.mk manual: get rid of the lists of packages 2016-09-19 19:32:59 +02:00
manual.txt docs/manual: always point to the correct license file 2018-06-10 16:33:44 +02:00
migrating.txt docs/manual: add appendix about $(HOST_DIR)/usr 2017-09-06 22:13:40 +02:00
package-make-target.txt
patch-policy.txt docs: clarify <packagename>_PATCH behaviour 2017-09-24 14:43:37 +02:00
prerequisite.txt docs/manual: update host gcc minimum required version 2018-08-05 14:13:41 +02:00
quickstart.txt
rebuilding-packages.txt
resources.txt docs: use lists.buildroot.org to refer to the mailman archives 2015-09-14 14:50:40 +02:00
using-buildroot-debugger.txt manual: remove references to host/usr paths 2017-07-05 16:06:28 +02:00
using-buildroot-development.txt Allow adding per-package override rsync exclusions 2018-04-01 17:05:35 +02:00
using-buildroot-toolchain.txt docs/manual: add documentation for the "make sdk" target 2018-02-25 23:26:28 +01:00
writing-rules.txt tools: rename to 'utils' 2017-07-01 18:07:00 +02:00