zephyr/cmake/vif.cmake
Madhurima Paruchuri a19d905cc4 USB-C: genVIF: Cleanup and add support to pick static data from input
Removed few VIF properties which are being hardcoded
Updated the script to parse source VIF XML and add information to
the output
Added optional Kconfig option to configure custom source VIF XML path
Cleaned up the code

Signed-off-by: Madhurima Paruchuri <mparuchuri@google.com>
2023-05-26 13:54:43 -04:00

58 lines
2.2 KiB
CMake

# Copyright (c) 2022 The Chromium OS Authors
# SPDX-License-Identifier: Apache-2.0
# Generates USB-C VIF policies in XML format from device tree.
set(gen_vif_script ${ZEPHYR_BASE}/scripts/generate_usb_vif/generate_vif.py)
set(dts_compatible usb-c-connector)
set(vif_xml vif.xml)
set(board_vif_xml ${BOARD}_${vif_xml})
set(vif_out ${PROJECT_BINARY_DIR}/${vif_xml})
set(cmd_gen_vif ${PYTHON_EXECUTABLE} ${gen_vif_script}
--edt-pickle ${EDT_PICKLE}
--compatible ${dts_compatible}
--vif-out ${vif_out}
)
if (CONFIG_GENVIF_INPUT_VIF_XML_PATH)
if (IS_ABSOLUTE ${CONFIG_GENVIF_INPUT_VIF_XML_PATH})
if (EXISTS ${CONFIG_GENVIF_INPUT_VIF_XML_PATH})
set(vif_source_xml ${CONFIG_GENVIF_INPUT_VIF_XML_PATH})
endif ()
elseif (EXISTS ${APPLICATION_CONFIG_DIR}/${CONFIG_GENVIF_INPUT_VIF_XML_PATH})
set(vif_source_xml ${APPLICATION_CONFIG_DIR}/${CONFIG_GENVIF_INPUT_VIF_XML_PATH})
endif ()
else ()
if (EXISTS ${APPLICATION_CONFIG_DIR}/boards/${board_vif_xml})
set(vif_source_xml ${APPLICATION_CONFIG_DIR}/boards/${board_vif_xml})
elseif (EXISTS ${APPLICATION_CONFIG_DIR}/${vif_xml})
set(vif_source_xml ${APPLICATION_CONFIG_DIR}/${vif_xml})
elseif (EXISTS ${BOARD_DIR}/${vif_xml})
set(vif_source_xml ${BOARD_DIR}/${vif_xml})
endif ()
endif ()
if (DEFINED vif_source_xml)
list(APPEND cmd_gen_vif --vif-source-xml ${vif_source_xml})
else ()
if (CONFIG_GENVIF_INPUT_VIF_XML_PATH)
message(FATAL_ERROR "Incorrect VIF source XML file path. To fix specify"
" correct XML file path at 'CONFIG_GENVIF_INPUT_VIF_XML_PATH'.")
else ()
message(FATAL_ERROR "No VIF source XML file found. To fix, create"
" '${board_vif_xml}' in 'boards' directory of application"
" directory, or create '${vif_xml}' file in application"
" directory or board directory, or supply a custom XML VIF path"
" using 'CONFIG_GENVIF_INPUT_VIF_XML_PATH'.")
endif ()
endif ()
add_custom_command(
OUTPUT ${vif_xml}
DEPENDS ${EDT_PICKLE}
COMMENT "Generating XML file at zephyr/vif.xml"
COMMAND ${cmd_gen_vif}
)
add_custom_target(gen_vif ALL DEPENDS ${vif_xml})