Kconfig 문법

2015. 2. 26. 18:31Linux/Kernel


참고 ​http://blog.daum.net/heyjun/15705375


1. mainmenu

ex) mainmenu "Linux Kerenl Configuration"

-> mainmenu 뒤에 "Linux Kernel Configuration"를 menuconfig 문장의 타이틀로 사용한다.

 


2, config

ex) config <Features>

Kernel Configuration의 Menu Entry가 되며, Menu entry 란 Kernel configuration에 지정될 수 있는 Config 항목을 말한다.


ex)

config TEST

bool "Test Menu"

default y

depends on MODULES

select EXAMPLE

help

Test or Test!


이렇게 작성했을 때 CONFIG_TEST라는 항목이 만들어진다. 아래 문장들은 config의 속성이라고 보면 된다.


3. bool

ex)

config TEST

bool "Test Menu"

-> Menu entry 속성 중 bool 타입을 지정하는 명령어로 yes/no 두개의 상태만 지정이 가능하다. 즉, define 할지 undefine 할지 결정


tristate : yes/module/no 3개의 상태 중 선택

string  : string value type

hex     : hex decimal value type

int      : integer value type


즉, bool은 <yes/no>, tristate는 <yes/module/no>, string,hex,int는 각각 문자열, hex값, int값을 입력 할 수 있도록 한다.


4. prompt

Menu entry는 하나의 prompt를 갖는데 prompt란 사용자가 볼 수 있도록 화면에 출력시켜주는 문자열이다.

메뉴상에 나타나는 문장이며, 생략이 가능하다.


ex)

bool "Test Menu"

=

bool

prompt "Test Menu"


두 문장은 같은 의미로 사용된다.


5. default

Menu entry의 기본 값을 설정하는 옵션.


ex)

default y   -> 기본 적으로 yes를 사용하겠다는 의미이다.


6. depends on

해당 Menu entry의 종속성을 설정하는 옵션으로, 즉 다른 Feature가 선택되면 해당 Menu entry가 활성화 되게 하는 옵션이다.


ex)

depends on MODULES

-> MODULES라는 Menu entry가 yes, active, on 등 긍정적인 설정이 되면 해당 Menu entry가 활성화 된다.

A가 밥을 먹으면 B도 밥을 먹는다.


7. select

역 종속성을 설정하는 옵션으로 depends on과는 반대로 해당 Menu entry가 활성화되면 다른 Menu entry도 같이 활성화 되는 옵션이다.

->A가 밥을 먹으니 B도 밥을 먹는다.


ex) select MODULES


말 그대로 종속성을 거스르기에 A에 종속되어있는 메뉴가 A가 on되기 전에 select 옵션으로 인해 활성화가 될 수도 있다.

그래서 select는 주로 non-visible symbols와 종속성이 없는 일반적인 entry에 사용된다.


8. menu ~ endmenu


ex)

menu "Device Drivers"


source "drivers/base/Kconfig"

source "drivers/connector/Kconfig"


endmenu

종속성을 만드는 옵션으로, "Device Drivers"라는 entry 하위에 Menu entry를 지정 할 수 있다. (종속성)

source는 해당 파일을 불러오는 옵션이다.

즉, "Device Drivers" 메뉴 하위에 "drivers/base/Kconfig", "drivers/connector/Kconfig"를 불러와 하위 entry로 설정하는 의미이다.


9. choice ~ endchoice

ex)

choice

config TEST

bool "Test Menu"

default y

depends on MODULES

select EXAMPLE

help

Test or Test!

config TEST2   

bool "Test2 Menu"

default y

depends on MODULES2

select EXAMPLE2

help

Test or Test!

 

endchoice


choice 와 endchoice 사이에 entry중 선택적으로 활성화 시킬 수 있다.


10. if ~endif


if의 내용이 참일 때 if ~ endif 사이의 내용을 수행한다.


11. menuconfig

 

종속된 entry에게 영향을 주기위해 사용되며, 위의 Kconfig 파일의 경우 LOGO가 활성화 되어야 if가 참이되어 종속되어있는 entry를 활성화 한다.


종속된 entry에게 영향을 주기위해 사용되며, 위의 Kconfig 파일의 경우 LOGO가 활성화 되어야 if가 참이되어 종속되어있는 entry를 활성화 한다.