blob: 9d66348051b29a63831eceb3202f6061e3a8af68 [file] [log] [blame]
include(CMakeParseArguments)
# iree_model_input()
#
# CMake function to load an external model input (an image)
# and convert to the iree_c_embed_data.
#
# Parameters:
# NAME: Name of model input image.
# SHAPE: Input shape.
# SRC: Input image URL.
# QUANT: When added, indicate it's a quant model.
#
# Examples:
# iree_model_input(
# NAME
# person_detection_quant_input
# SHAPE
# "1, 96, 96, 1"
# SRC
# "https://github.com/tensorflow/tflite-micro/raw/aeac6f39e5c7475cea20c54e86d41e3a38312546/ \
# tensorflow/lite/micro/examples/person_detection/testdata/person.bmp"
# QUANT
# )
#
function(iree_model_input)
cmake_parse_arguments(
_RULE
"QUANT"
"NAME;SHAPE;SRC"
""
${ARGN}
)
get_filename_component(EXT_STR "${_RULE_SRC}" LAST_EXT)
set(_GEN_INPUT_SCRIPT "${CMAKE_SOURCE_DIR}/build_tools/gen_mlmodel_input.py")
set(_OUTPUT_BINARY ${_RULE_NAME}.bin)
set(_ARGS)
list(APPEND _ARGS "--i=${_RULE_NAME}${EXT_STR}")
list(APPEND _ARGS "--o=${_OUTPUT_BINARY}")
list(APPEND _ARGS "--s=${_RULE_SHAPE}")
list(APPEND _ARGS "--u=${_RULE_SRC}")
if(_RULE_QUANT)
list(APPEND _ARGS "--q")
endif()
add_custom_command(
OUTPUT
${_OUTPUT_BINARY}
COMMAND
${_GEN_INPUT_SCRIPT} ${_ARGS}
)
iree_c_embed_data(
NAME
"${_RULE_NAME}_c"
GENERATED_SRCS
"${_OUTPUT_BINARY}"
C_FILE_OUTPUT
"${_RULE_NAME}_c.c"
H_FILE_OUTPUT
"${_RULE_NAME}_c.h"
FLATTEN
PUBLIC
)
endfunction()