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
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
adding-packages-golang.txt package/pkg-golang: use 'build' instead of 'install' 2018-04-01 16:36:28 +02:00
adding-packages-hooks.txt
adding-packages-kconfig.txt core/pkg-kconfig: allow dependencies before configurators 2018-08-18 23:21:03 +02:00
adding-packages-kernel-module.txt
adding-packages-linux-kernel-spec-infra.txt
adding-packages-luarocks.txt
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
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
adding-packages-waf.txt
adding-packages.txt docs/manual: add check-package to "Tips and tricks" 2018-04-02 00:42:59 +02:00
advanced.txt
appendix.txt
beyond-buildroot.txt
ccache-support.txt
common-usage.txt support/scripts/graph-depends: use colors instead of colours 2018-04-01 20:01:38 +02:00
configure-other-components.txt
configure.txt
contribute.txt docs/manual: add check-package to "Tips and tricks" 2018-04-02 00:42:59 +02:00
customize-configuration.txt
customize-device-permission-tables.txt
customize-directory-structure.txt
customize-outside-br.txt
customize-packages.txt
customize-patches.txt
customize-post-image.txt
customize-quick-guide.txt
customize-rootfs.txt
customize-users-tables.txt
customize.txt
debugging-buildroot.txt
developers.txt
download-infra.txt
download-location.txt
eclipse-integration.txt
faq-troubleshooting.txt
getting.txt
how-buildroot-works.txt
introduction.txt
known-issues.txt
legal-notice.txt
make-tips.txt
makedev-syntax.txt
makeusers-syntax.txt
manual.mk
manual.txt docs/manual: always point to the correct license file 2018-06-10 16:33:44 +02:00
migrating.txt
package-make-target.txt
patch-policy.txt
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
using-buildroot-debugger.txt
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