• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1
2function(IMPORT_BOARD_CONFIG PREPEND_CONFIG VALID_CONFIG_INPUT CONFIG_OUTPUT_FILE)
3    # Parse entries prefixed with 'PREPEND_CONFIG' in ${VALID_CONFIG_INPUT}
4    file(STRINGS ${VALID_CONFIG_INPUT} LOS_CONFIG_LIST REGEX "^${PREPEND_CONFIG}" ENCODING "UTF-8")
5
6    foreach (LOSCFG ${LOS_CONFIG_LIST})
7        # LOSCFG maybe: LOSCFG_CC_STACKPROTECTOR_STRONG=y
8
9        # The first: variable name
10        string(REGEX MATCH "[^=]+" LOSCFG_VAR_NAME "${LOSCFG}")
11
12        # The second: variable value
13        string(REGEX MATCH "=(.+$)" LOSCFG_VAR_VAL "${LOSCFG}")
14        set(LOSCFG_VAR_VAL ${CMAKE_MATCH_1})
15
16        # write to menuconfig.h
17        if(CONFIG_OUTPUT_FILE)
18            if(LOSCFG_VAR_VAL MATCHES "^y$")
19                file(APPEND ${CONFIG_OUTPUT_FILE} "#define ${LOSCFG_VAR_NAME} 1\n")
20            else()
21                file(APPEND ${CONFIG_OUTPUT_FILE} "#define ${LOSCFG_VAR_NAME} ${LOSCFG_VAR_VAL}\n")
22            endif()
23        endif()
24
25        # remove quotes
26        if("${LOSCFG_VAR_VAL}" MATCHES "^\"(.*)\"$")
27            set(LOSCFG_VAR_VAL ${CMAKE_MATCH_1})
28        endif()
29
30        # config globally
31        set(${LOSCFG_VAR_NAME} ${LOSCFG_VAR_VAL} PARENT_SCOPE)
32        MESSAGE("${LOSCFG_VAR_NAME} is set to ${LOSCFG_VAR_VAL}")
33    endforeach()
34endfunction()
35