Kconfig multiple set-value and priority

I would like to know the behavior when multiple Kconfig value settings are defined.
Settings are made in the following three places. (app directory)

Setting value of NRFX_GPIOTE_NUM_OF_EVT_HANDLERS
1. Kconfig
    config NRFX_GPIOTE_NUM_OF_EVT_HANDLERS
           default 2

2.CMakeLists.txt
set(CONFIG_NRFX_GPIOTE_NUM_OF_EVT_HANDLERS 4 CACHE INTERNAL "")

3.proj.conf
CONFIG_NRFX_GPIOTE_NUM_OF_EVT_HANDLERS=8

Please let me know those priority.

Parents
  • Hi,

     

    The value set in the application sets precedence:

    https://docs.zephyrproject.org/3.1.0/build/kconfig/setting.html#the-initial-configuration

     

    But; The CMakeLists.txt ordering also has an effect.

    If this is your CMakeLists.txt:

    cmake_minimum_required(VERSION 3.20.0)
    
    set(CONFIG_NRFX_GPIOTE_NUM_OF_EVT_HANDLERS 4 CACHE INTERNAL "")
    
    find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})

    Then the ordering is:

    1. CMakeLists.txt

    2. prj.conf

    3. Kconfig "default" keyword.

     

    If you switch the lines, so that find_package is first:

    cmake_minimum_required(VERSION 3.20.0)
    
    find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
    
    set(CONFIG_NRFX_GPIOTE_NUM_OF_EVT_HANDLERS 4 CACHE INTERNAL "")

    Then it will be:

    1. prj.conf

    2. CMakeLists.txt

    3. Kconfig "default" keyword.

     

    Kind regards,

    Håkon

  • Realy?

    I try on scan_adv project

    Kconfig

    source "Kconfig.zephyr"
    
    config NRFX_GPIOTE_NUM_OF_EVT_HANDLERS
    	default 2
    

    CMakeLists.txt

    cmake_minimum_required(VERSION 3.20.0)
    
    set(CONFIG_NRFX_GPIOTE_NUM_OF_EVT_HANDLERS 4 CACHE INTERNAL "")
    
    find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
    
    project(scan_adv)
    
    FILE(GLOB app_sources src/*.c)
    target_sources(app PRIVATE ${app_sources})
    

    prj.conf

    CONFIG_BT=y
    CONFIG_BT_BROADCASTER=y
    CONFIG_BT_OBSERVER=y
    CONFIG_BT_DEBUG_LOG=y
    CONFIG_NRFX_GPIOTE_NUM_OF_EVT_HANDLERS=8
    

    The expected setting value is
    CONFIG_NRFX_GPIOTE_NUM_OF_EVT_HANDLERS=8

    but actually
    CONFIG_NRFX_GPIOTE_NUM_OF_EVT_HANDLERS=4

    what am i doing wrong?

Reply
  • Realy?

    I try on scan_adv project

    Kconfig

    source "Kconfig.zephyr"
    
    config NRFX_GPIOTE_NUM_OF_EVT_HANDLERS
    	default 2
    

    CMakeLists.txt

    cmake_minimum_required(VERSION 3.20.0)
    
    set(CONFIG_NRFX_GPIOTE_NUM_OF_EVT_HANDLERS 4 CACHE INTERNAL "")
    
    find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
    
    project(scan_adv)
    
    FILE(GLOB app_sources src/*.c)
    target_sources(app PRIVATE ${app_sources})
    

    prj.conf

    CONFIG_BT=y
    CONFIG_BT_BROADCASTER=y
    CONFIG_BT_OBSERVER=y
    CONFIG_BT_DEBUG_LOG=y
    CONFIG_NRFX_GPIOTE_NUM_OF_EVT_HANDLERS=8
    

    The expected setting value is
    CONFIG_NRFX_GPIOTE_NUM_OF_EVT_HANDLERS=8

    but actually
    CONFIG_NRFX_GPIOTE_NUM_OF_EVT_HANDLERS=4

    what am i doing wrong?

Children
Related