summaryrefslogtreecommitdiff
path: root/compiler/tflite2circle-conversion-test/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/tflite2circle-conversion-test/CMakeLists.txt')
-rw-r--r--compiler/tflite2circle-conversion-test/CMakeLists.txt94
1 files changed, 94 insertions, 0 deletions
diff --git a/compiler/tflite2circle-conversion-test/CMakeLists.txt b/compiler/tflite2circle-conversion-test/CMakeLists.txt
new file mode 100644
index 000000000..d7b644242
--- /dev/null
+++ b/compiler/tflite2circle-conversion-test/CMakeLists.txt
@@ -0,0 +1,94 @@
+nnas_include(TargetRequire)
+
+unset(REQUIRED_TARGETS)
+list(APPEND REQUIRED_TARGETS tflite2circle)
+list(APPEND REQUIRED_TARGETS tflchef)
+TargetRequire_Return(${REQUIRED_TARGETS})
+
+nncc_find_resource(TensorFlowLiteRecipes)
+
+set(TEST_REPO "${TensorFlowLiteRecipes_DIR}")
+set(TEST_RECIPE_FILENAME "test.recipe")
+
+unset(TESTCASES)
+macro(add NAME)
+ list(APPEND TESTCASES ${NAME})
+endmacro(add)
+
+# Read "test.lst"
+include("test.lst")
+
+unset(TEST_DEPS)
+unset(TEST_NAMES)
+
+foreach(PREFIX IN ITEMS ${TESTCASES})
+ if(NOT IS_DIRECTORY "${TEST_REPO}/${PREFIX}")
+ message(FATAL_ERROR "Missing '${PREFIX}' test")
+ endif()
+
+ set(RECIPE_SOURCE_PATH "${TEST_REPO}/${PREFIX}/${TEST_RECIPE_FILENAME}")
+ set(RECIPE_FILE "${PREFIX}.recipe")
+ set(RECIPE_BINARY_PATH "${CMAKE_CURRENT_BINARY_DIR}/${RECIPE_FILE}")
+
+ set(TFLITE_FILE "${PREFIX}.tflite")
+ set(TFLITE_OUTPUT_PATH "${CMAKE_CURRENT_BINARY_DIR}/${TFLITE_FILE}")
+
+ # Copy .recipe
+ add_custom_command(OUTPUT ${RECIPE_BINARY_PATH}
+ COMMAND ${CMAKE_COMMAND} -E copy "${RECIPE_SOURCE_PATH}" "${RECIPE_BINARY_PATH}"
+ DEPENDS ${RECIPE_SOURCE_PATH}
+ COMMENT "Generate ${RECIPE_FILE}"
+ )
+
+ # Generate .tflite
+ add_custom_command(OUTPUT ${TFLITE_OUTPUT_PATH}
+ COMMAND $<TARGET_FILE:tflchef-file> ${RECIPE_BINARY_PATH} ${TFLITE_OUTPUT_PATH}
+ DEPENDS ${RECIPE_BINARY_PATH}
+ COMMENT "Generate ${PREFIX}.tflite"
+ )
+
+ list(APPEND TEST_DEPS ${RECIPE_BINARY_PATH} ${TFLITE_OUTPUT_PATH})
+ list(APPEND TEST_NAMES ${PREFIX})
+endforeach(PREFIX IN ITEMS ${TESTCASES})
+
+##
+## Copy testall
+##
+set(TEST_RUNNER "${CMAKE_CURRENT_BINARY_DIR}/testall.sh")
+set(TEST_RUNNER_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/testall.sh")
+
+add_custom_command(
+ OUTPUT ${TEST_RUNNER}
+ COMMAND ${CMAKE_COMMAND} -E copy "${TEST_RUNNER_SOURCE}" "${TEST_RUNNER}"
+ DEPENDS ${TEST_RUNNER_SOURCE}
+ COMMENT "Generate test runner"
+)
+
+list(APPEND TEST_DEPS "${TEST_RUNNER}")
+
+###
+### Generate test.config
+###
+set(TEST_CONFIG "${CMAKE_CURRENT_BINARY_DIR}/test.config")
+
+add_custom_command(
+ OUTPUT ${TEST_CONFIG}
+ COMMAND ${CMAKE_COMMAND} -E remove -f ${TEST_CONFIG}
+ COMMAND ${CMAKE_COMMAND} -E echo 'TFLITE2CIRCLE_PATH=\"$<TARGET_FILE:tflite2circle>\"' >> ${TEST_CONFIG}
+ DEPENDS tflite2circle
+ COMMENT "Generate test configuration"
+)
+
+list(APPEND TEST_DEPS "${TEST_CONFIG}")
+
+# This "tflite2circle_conversion_test_deps" target enforces CMake to generate all the dependencies during "build" phase
+add_custom_target(tflite2circle_conversion_test_deps ALL DEPENDS ${TEST_DEPS})
+
+# Run tests
+add_test(
+ NAME tflite2circle_conversion_test
+ COMMAND "${TEST_RUNNER}"
+ "${TEST_CONFIG}"
+ "${CMAKE_CURRENT_BINARY_DIR}"
+ ${TEST_NAMES}
+)