Linux内核Kconfig:如何取消选择选项?

时间:2019-01-19 06:30:30

标签: linux-kernel

如何取消选择一个选项? 例如,以下脚本是我想要实现的:

choice                                                                                         
    prompt "Camera type"                                                                       
    default CAMERA1                                                                            

config CAMERA1                                                                                 
    select POWER_PIN_ACTIVE_HIGH                                                               

config CAMERA2                                                                                 
    deselect POWER_PIN_ACTIVE_HIGH

config CAMERA3                                                                                 
    select POWER_PIN_ACTIVE_HIGH                                                         

endchoice                                                                                      

config POWER_PIN_ACTIVE_HIGH                                                                   
    bool "Power pin is high active?"                                                           
    help  Say 'y' if the power pin is high active, 'n' if low active.                          

显然,没有de-select命令,甚至没有select XXXX = n命令。

如何实现效果,或通过其他方式实现脚本的目标? 另外,我想隐藏POWER_PIN_ACTIVE_HIGH选项。选择摄像机类型后,应自动选择/取消选择它。

-更新-

我尝试了另一种方式。它正在工作,但是Makefile给了我POWER_PIN_ACTIVE_HIGH警告的强制选择:

choice                                                                                         
    prompt "Camera type"                                                                       
    default CAMERA1                                                                            

config CAMERA1                                                                                 
    select POWER_PIN_ACTIVE_HIGH                                                               

config CAMERA2                                                                                 
    deselect POWER_PIN_ACTIVE_HIGH

config CAMERA3                                                                                 
    select POWER_PIN_ACTIVE_HIGH                                                         

endchoice                                                                                      

config POWER_PIN_ACTIVE_HIGH
    depends on __HIDDEN_OPTION__                                                                   
    bool "Power pin is high active?"                                                           
    help  Say 'y' if the power pin is high active, 'n' if low active. 

由于__HIDDEN_OPTION__从来都不是配置选项,因此脚本可以工作,因此在所有情况下都导致依赖项失败。只有那些强制执行的select命令才能覆盖它并选择配置。尽管Makefile发出警告,但由于__HIDDEN_OPTION__条件不匹配(从未匹配)。

有更好的主意吗?

2 个答案:

答案 0 :(得分:0)

默认和选择可用于实现相同目的

config POWER_PIN_ACTIVE_HIGH
    bool
    default n

config CAMERA1                                                                                 
    select POWER_PIN_ACTIVE_HIGH

config CAMERA2                                                                                 

答案 1 :(得分:0)

最后,我得到了自己的答案:

choice
    prompt "Camera type"
    default CAMERA1

config CAMERA1
    bool "camera1 support"
    select POWER_PIN_ACTIVE_HIGH

config CAMERA2
    bool "camera2 support"

config CAMERA3
    bool "camera3 support"
    select POWER_PIN_ACTIVE_HIGH

config CAMERA4
    bool "camera4 support"

endchoice

config POWER_PIN_ACTIVE_HIGH
    depends on CAMERA1 || CAMERA3
    # or, alternatively, we can say depends on !CAMERA2 && !CAMERA4

    # Since this shows up only when CAMERA1 || CAMERA2, we don't need help,
    # and we don't ask question, just an affirmative statement.
    bool "This camera has an active-high power pin."

然而,这个答案Kconfig编写者必须小心以保持一致。另一个缺点是,当选择其中一个低功率引脚照相机时,它不会显示“低有效”状态。

如果没有更好的答案,我将在几天内接受这个答案。