是否可以在Kconfig中将选项转换为int

时间:2015-07-09 18:45:58

标签: kbuild

我正在寻找一种方法将选项转换为Kconfig文件中的int。例如,我想要:

config BUFSIZE
    int

choice
    prompt "choose a buffersize"
    depends on FOOBAR
    default 10 if FOO
    default 15 if BAR 
    default 20

config SIZE10
    bool "10"
    depends on !FOO
    select BUFSIZE=10

config SIZE15
    bool "15"
    depends on FOOBAR | BAR
    select BUFSIZE=15

config SIZE20
    bool "20"
    depends on BAR
    select BUFSIZE=20

endchoice

当然,您不能将=select一起使用,因此上述方法无效。实际的选择列表有点长且易变,所以我想避免在另一个文件中有一个#ifdef字符串来将这些字符串转换为整数(这些值在Makefile和C文件中使用。 ..)

我的另一种选择是让BUFSIZE用户可配置,但这是有问题的,因为我无法很好地限制可能的值。同样,如果我为int指定默认值,并运行make oldconfig(之前未定义该值),则会提示我输入值。如果为选项设置了默认值,则它似乎不会提示您使用make oldconfig。这很重要,因为FOOBAR经常关闭/打开,我希望它在打开时自动选择架构的默认值。

我想知道是否有一个干净的解决方案,我忽略了。

1 个答案:

答案 0 :(得分:4)

这样做:

choice
    prompt "choose a buffersize"
    depends on FOOBAR
    config BUFFERSIZE_15
        bool "15"
    config BUFFERSIZE_20
        bool "20"
    config BUFFERSIZE_25
        bool "25"
endchoice

config BUFSIZE
    int
    default 10
    default 15 if BUFFERSIZE_15
    default 20 if BUFFERSIZE_20
    default 25 if BUFFERSIZE_25