在Kconfig文件中获取环境变量值的语法

时间:2012-04-11 03:38:28

标签: linux-kernel

有人能为我提供在Kconfig文件中获取环境变量值的语法吗?

根据环境变量的值,我需要有条件地获取另一个Kconfig文件。

2 个答案:

答案 0 :(得分:5)

您需要使用'option env'在配置符号中捕获环境变量的值,如下所示:

config ENV_VAR
    string
    option env="ENV_VAR"

if ENV_VAR = "foo"
source "foo_file"
endif

作为旁注,'source'语句中的$ -ference引用了配置变量,而不是环境变量。你不能做像

这样的事情
source "foo/$ENV_VAR/Kconfig"

你需要做

config ENV_VAR_SYM
    string
    option env="ENV_VAR"

source "foo/$ENV_VAR_SYM/Kconfig"

(ENV_VAR_SYM当然可以称为ENV_VAR;我只是更改了名称以澄清事情。)

另一个例子,请参阅内核根目录中的顶级Kconfig文件。

(我是Kconfiglib Kconfiglib的作者,这是一个用于处理基于Kconfig的配置系统的库。)

答案 1 :(得分:2)

根据the kconfig docs

<expr> ::= <symbol>                             (1)
           <symbol> '=' <symbol>                (2)
           <symbol> '!=' <symbol>               (3)
           '(' <expr> ')'                       (4)
           '!' <expr>                           (5)
           <expr> '&&' <expr>                   (6)
           <expr> '||' <expr>                   (7)


- misc options: "option" <symbol>[=<value>]

  - "env"=<value>
  This imports the environment variable into Kconfig.

if:

    "if" <expr>
    <if block>
    "endif"

This defines an if block. The dependency expression <expr> is appended
to all enclosed menu entries.

source:

    "source" <prompt>

This reads the specified configuration file. This file is always parsed.

所以我试试

option env="YOURVAR"
if YOURVAR=foo
    source "somefile"
endif
if YOURVAR!=foo
    source "someotherfile"
endif