Buildroot的配置选项是如何动态生成的?

问题描述 投票:0回答:1

如果我下载新的 buildroot(截至 2024 年),我可以看到,当我没有明确选择使用 u-boot 构建的选项时,在运行时

make help
我将看不到与 u-boot 相关的任何内容。另一方面,如果我运行
menuconfig
并选择 u-boot,我将看到与 u-boot 相关的配置选项。这个机制是如何运作的?

P。 S.:我看到 Config.in 中的 if/endif 部分位于 /boot/uboot。但是 Makefile 如何包含此包的新动态目标呢?我还是不知道..

P。 P.S.:我非常想研究一下 u-boot 是如何完成的,这样我就可以对我的包做同样的事情。

buildroot
1个回答
0
投票

当您运行

make help
时,Make 只需运行顶层 Makefile 中定义的
help
目标的命令:

help:
        @echo 'Cleaning:'
        @echo '  clean                  - delete all files created by build'
        @echo '  distclean              - delete all non-source files (including .config)'
        @echo
        @echo 'Build:'
...

在那篇很长的文字中间是动态部分:

        $(foreach p,$(HELP_PACKAGES), \
                @echo $(sep) \
                @echo '$($(p)_NAME):' $(sep) \
                $($(p)_HELP_CMDS)$(sep))

sep
是一个换行符 - 我们不能在那里使用实际的换行符,因为我们位于
foreach
命令中。

HELP_PACKAGES
设置在
inner-generic-package
中巨大的
package/pkg-generic.mk
宏中。如果启用了包并且它定义了
FOO_HELP_CMDS
,它会将包的名称添加到该列表中。

$(p)_NAME
$(p)_HELP_CMDS
扩展为
UBOOT_NAME
UBOOT_HELP_CMDS
UBOOT_NAME
也由
inner-generic-package
设置。
UBOOT_HELP_CMDS
设置为
package/pkg-kconfig.mk

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.