123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- if(ZEPHYR_MODULES)
- set(ZEPHYR_MODULES_ARG "--modules" ${ZEPHYR_MODULES})
- endif()
- if(ZEPHYR_EXTRA_MODULES)
- set(ZEPHYR_EXTRA_MODULES_ARG "--extra-modules" ${ZEPHYR_EXTRA_MODULES})
- endif()
- set(KCONFIG_MODULES_FILE ${KCONFIG_BINARY_DIR}/Kconfig.modules)
- set(ZEPHYR_SETTINGS_FILE ${CMAKE_BINARY_DIR}/zephyr_settings.txt)
- if(WEST)
- set(WEST_ARG "--zephyr-base" ${ZEPHYR_BASE})
- endif()
- if(WEST OR ZEPHYR_MODULES)
-
-
- execute_process(
- COMMAND
- ${PYTHON_EXECUTABLE} ${ZEPHYR_BASE}/scripts/zephyr_module.py
- ${WEST_ARG}
- ${ZEPHYR_MODULES_ARG}
- ${ZEPHYR_EXTRA_MODULES_ARG}
- --kconfig-out ${KCONFIG_MODULES_FILE}
- --cmake-out ${CMAKE_BINARY_DIR}/zephyr_modules.txt
- --settings-out ${ZEPHYR_SETTINGS_FILE}
- WORKING_DIRECTORY ${ZEPHYR_BASE}
- ERROR_VARIABLE
- zephyr_module_error_text
- RESULT_VARIABLE
- zephyr_module_return
- )
- if(${zephyr_module_return})
- message(FATAL_ERROR "${zephyr_module_error_text}")
- endif()
- if(EXISTS ${ZEPHYR_SETTINGS_FILE})
- file(STRINGS ${ZEPHYR_SETTINGS_FILE} ZEPHYR_SETTINGS_TXT ENCODING UTF-8 REGEX "^[^#]")
- foreach(setting ${ZEPHYR_SETTINGS_TXT})
-
-
-
- string(REGEX REPLACE "\"(.*)\":\".*\"" "\\1" key ${setting})
- string(REGEX REPLACE "\".*\":\"(.*)\"" "\\1" value ${setting})
-
-
-
- if ("${key}" STREQUAL "MODULE_EXT_ROOT")
- list(INSERT ${key} 1 ${value})
- else()
- list(APPEND ${key} ${value})
- endif()
- endforeach()
- endif()
- foreach(root ${MODULE_EXT_ROOT})
- if(NOT EXISTS ${root})
- message(FATAL_ERROR "No `modules.cmake` found in module root `${root}`.")
- endif()
- include(${root}/modules/modules.cmake)
- endforeach()
- if(EXISTS ${CMAKE_BINARY_DIR}/zephyr_modules.txt)
- file(STRINGS ${CMAKE_BINARY_DIR}/zephyr_modules.txt ZEPHYR_MODULES_TXT
- ENCODING UTF-8)
- set(ZEPHYR_MODULE_NAMES)
- foreach(module ${ZEPHYR_MODULES_TXT})
-
-
-
- string(CONFIGURE ${module} module)
- string(REGEX REPLACE "\"(.*)\":\".*\":\".*\"" "\\1" module_name ${module})
- string(REGEX REPLACE "\".*\":\"(.*)\":\".*\"" "\\1" module_path ${module})
- string(REGEX REPLACE "\".*\":\".*\":\"(.*)\"" "\\1" cmake_path ${module})
- list(APPEND ZEPHYR_MODULE_NAMES ${module_name})
- zephyr_string(SANITIZE TOUPPER MODULE_NAME_UPPER ${module_name})
- if(NOT ${MODULE_NAME_UPPER} STREQUAL CURRENT)
- set(ZEPHYR_${MODULE_NAME_UPPER}_MODULE_DIR ${module_path})
- set(ZEPHYR_${MODULE_NAME_UPPER}_CMAKE_DIR ${cmake_path})
- else()
- message(FATAL_ERROR "Found Zephyr module named: ${module_name}\n\
- ${MODULE_NAME_UPPER} is a restricted name for Zephyr modules as it is used for \
- \${ZEPHYR_${MODULE_NAME_UPPER}_MODULE_DIR} CMake variable.")
- endif()
- endforeach()
- endif()
- else()
- file(WRITE ${KCONFIG_MODULES_FILE}
- "# No west and no modules\n"
- )
- endif()
- if(DEFINED ZEPHYR_MODULE_NAMES)
- list(REMOVE_DUPLICATES ZEPHYR_MODULE_NAMES)
- endif()
|