summaryrefslogtreecommitdiff
path: root/compiler/tf2circle-dredd-pb-test/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/tf2circle-dredd-pb-test/CMakeLists.txt')
-rw-r--r--compiler/tf2circle-dredd-pb-test/CMakeLists.txt141
1 files changed, 141 insertions, 0 deletions
diff --git a/compiler/tf2circle-dredd-pb-test/CMakeLists.txt b/compiler/tf2circle-dredd-pb-test/CMakeLists.txt
new file mode 100644
index 000000000..48b098e24
--- /dev/null
+++ b/compiler/tf2circle-dredd-pb-test/CMakeLists.txt
@@ -0,0 +1,141 @@
+nnas_include(TargetRequire)
+
+unset(REQUIRED_TARGETS)
+list(APPEND REQUIRED_TARGETS circle-inspect)
+list(APPEND REQUIRED_TARGETS circle-verify)
+list(APPEND REQUIRED_TARGETS tf2circle)
+list(APPEND REQUIRED_TARGETS dredd_rule_lib)
+TargetRequire_Return(${REQUIRED_TARGETS})
+
+set(PB_MODEL_REPO "${CMAKE_CURRENT_SOURCE_DIR}/contrib") # Where to find models to test
+
+unset(KEYS)
+unset(DEPS)
+
+function(check_file_exist)
+
+ foreach(FILE_PATH IN LISTS ARGV)
+ if(NOT EXISTS "${FILE_PATH}")
+ message(FATAL_ERROR "${FILE_PATH} does not exist." )
+ endif()
+ endforeach()
+
+endfunction()
+
+#
+# processing models in contrib.lst
+#
+# Example)
+#
+# Add(Inception_v3 RULE circle_1.0_rel_requirement.rule)
+# -> Read compiler/tf2circle-dredd-pb-test/contrib/Inception_v3/model.pb and generate
+# "Inception_v3.circle". Then rule file is tested for the generated circle file.
+#
+macro(Add MODEL_DIR)
+
+ set(ARG_OPTION)
+ set(ARG_ONE_VALUE RULE) # rule file name
+ set(ARG_MULTI_VALUE)
+ cmake_parse_arguments(ARG "${ARG_OPTION}" "${ARG_ONE_VALUE}" "${ARG_MULTI_VALUE}" ${ARGN})
+
+ if(NOT ARG_RULE )
+ message( FATAL_ERROR "RULE is mandadatory arg" )
+ endif()
+
+ set(RULE_FILENAME ${ARG_RULE})
+
+ set(MODEL_SOURCE_DIR "${PB_MODEL_REPO}/${MODEL_DIR}")
+
+ set(PB_PATH "${MODEL_SOURCE_DIR}/model.pb")
+ set(INFO_PATH "${MODEL_SOURCE_DIR}/model.info")
+ set(RULE_PATH "${MODEL_SOURCE_DIR}/${RULE_FILENAME}")
+
+ check_file_exist(${PB_PATH} ${INFO_PATH} ${RULE_PATH})
+
+ # Generate .test file which declares path of target pb, info, rule files
+ set(TARGET_TESTNAME "${MODEL_DIR}")
+ set(TEST_CONFIG_FILE "${CMAKE_CURRENT_BINARY_DIR}/${TARGET_TESTNAME}.test")
+
+ add_custom_command(
+ OUTPUT ${TEST_CONFIG_FILE}
+ COMMAND ${CMAKE_COMMAND} -E remove -f ${TEST_CONFIG_FILE}
+ COMMAND ${CMAKE_COMMAND} -E echo 'MODEL_PB_PATH="${PB_PATH}"' >> ${TEST_CONFIG_FILE}
+ COMMAND ${CMAKE_COMMAND} -E echo 'MODEL_INFO_PATH="${INFO_PATH}"' >> ${TEST_CONFIG_FILE}
+ COMMAND ${CMAKE_COMMAND} -E echo 'MODEL_RULE_PATH="${RULE_PATH}"' >> ${TEST_CONFIG_FILE}
+ DEPENDS
+ ${PB_PATH}
+ COMMENT "Generate ${TARGET_TESTNAME} configuration for BIN"
+ )
+
+ list(APPEND KEYS "${TARGET_TESTNAME}")
+ list(APPEND DEPS "${TEST_CONFIG_FILE}")
+
+endmacro(Add)
+
+include(contrib.lst OPTIONAL)
+
+#
+# Generate toolchain.config
+#
+set(TOOLCHAIN_CONFIG "${CMAKE_CURRENT_BINARY_DIR}/toolchain.config")
+
+add_custom_command(
+ OUTPUT ${TOOLCHAIN_CONFIG}
+ COMMAND ${CMAKE_COMMAND} -E remove -f ${TOOLCHAIN_CONFIG}
+ COMMAND ${CMAKE_COMMAND} -E echo 'CIRCLE_INSPECT_PATH=\"$<TARGET_FILE:circle-inspect>\"' >> ${TOOLCHAIN_CONFIG}
+ COMMAND ${CMAKE_COMMAND} -E echo 'CIRCLE_VERIFY_PATH=\"$<TARGET_FILE:circle-verify>\"' >> ${TOOLCHAIN_CONFIG}
+ COMMAND ${CMAKE_COMMAND} -E echo 'TF2CIRCLE_PATH=\"$<TARGET_FILE:tf2circle>\"' >> ${TOOLCHAIN_CONFIG}
+ # add more if new excutable file is needed in runner.sh and rule-lib.sh
+ DEPENDS
+ circle-inspect
+ circle-verify
+ tf2circle
+ COMMENT "Generate toolchin configuration"
+)
+
+list(APPEND DEPS "${TOOLCHAIN_CONFIG}")
+
+#
+# Generate quality test runner
+#
+set(SOURCE_RUNNER "${CMAKE_CURRENT_SOURCE_DIR}/runner.sh")
+set(TARGET_RUNNER "${CMAKE_CURRENT_BINARY_DIR}/runner.sh")
+
+add_custom_command(
+ OUTPUT ${TARGET_RUNNER}
+ COMMAND ${CMAKE_COMMAND} -E copy "${SOURCE_RUNNER}" "${TARGET_RUNNER}"
+ DEPENDS ${SOURCE_RUNNER}
+ COMMENT "Generate test runner"
+)
+
+list(APPEND DEPS "${TARGET_RUNNER}")
+
+#
+# copy rule-lib.sh (a library of shell script functions)
+#
+
+# getting path for rule-lib.sh in dredd-rule-lib
+get_target_property(DREDD_RULE_LIB_DIR dredd_rule_lib BINARY_DIR)
+
+set(SOURCE_RULE_LIB "${DREDD_RULE_LIB_DIR}/rule-lib.sh")
+set(TARGET_RULE_LIB "${CMAKE_CURRENT_BINARY_DIR}/rule-lib.sh")
+
+add_custom_command(
+ OUTPUT ${TARGET_RULE_LIB}
+ COMMAND ${CMAKE_COMMAND} -E copy "${SOURCE_RULE_LIB}" "${TARGET_RULE_LIB}"
+ DEPENDS ${SOURCE_RULE_LIB}
+ COMMENT "Generate rule lib"
+)
+
+list(APPEND DEPS "${TARGET_RULE_LIB}")
+
+# Generate dependencies
+add_custom_target(tf2circle_dredd_pb_deps ALL DEPENDS ${DEPS})
+
+add_test(
+ NAME tf2circle_dredd_pb_test
+ COMMAND
+ "${TARGET_RUNNER}"
+ "${TOOLCHAIN_CONFIG}"
+ ${KEYS}
+)