ded416216728036b831f23d729415580b83cd506
[platform/core/ml/nnfw.git] / compiler / tf2tfliteV2-conversion-test / CMakeLists.txt
1 if(NOT ENABLE_TEST)
2   return()
3 endif(NOT ENABLE_TEST)
4
5 nncc_find_resource(TensorFlowTests)
6
7 #
8 # Copy [PREFIX]/test.pbtxt to PREFIX.pbtxt in binary folder
9 # Copy [PREFIX]/test.info to PREFIX.info in binary folder
10 # Encode PREFIX.pbtxt to PREFIX.pb
11 #
12 set(TEST_REPO "${TensorFlowTests_DIR}")
13 set(TEST_PBTXT_FILENAME "test.pbtxt")
14 set(TEST_INFO_FILENAME "test.info")
15
16 unset(TESTCASES)
17
18 macro(add NAME)
19   list(APPEND TESTCASES ${NAME})
20 endmacro(add)
21
22 # Read "test.lst"
23 include("test.lst")
24 # Read "test.local.lst" if exists
25 include("test.local.lst" OPTIONAL)
26
27 unset(TEST_DEPS)
28 unset(TEST_NAMES)
29
30 foreach(PREFIX IN ITEMS ${TESTCASES})
31   if(NOT IS_DIRECTORY "${TEST_REPO}/${PREFIX}")
32     message(FATAL_ERROR "Missing '${PREFIX}' test")
33   endif()
34
35   set(PBTXT_SOURCE_PATH "${TEST_REPO}/${PREFIX}/${TEST_PBTXT_FILENAME}")
36   set(INFO_SOURCE_PATH "${TEST_REPO}/${PREFIX}/${TEST_INFO_FILENAME}")
37
38   set(PBTXT_FILE "${PREFIX}.pbtxt")
39   set(PBTXT_PATH "${CMAKE_CURRENT_BINARY_DIR}/${PBTXT_FILE}")
40
41   set(INFO_FILE "${PREFIX}.info")
42   set(INFO_PATH "${CMAKE_CURRENT_BINARY_DIR}/${INFO_FILE}")
43
44   # Copy .pbtxt
45   add_custom_command(OUTPUT ${PBTXT_PATH}
46     COMMAND ${CMAKE_COMMAND} -E copy "${PBTXT_SOURCE_PATH}" "${PBTXT_PATH}"
47     DEPENDS ${PBTXT_SOURCE_PATH}
48     COMMENT "Generate ${PBTXT_FILE}"
49   )
50
51   # Copy .info
52   add_custom_command(OUTPUT ${INFO_PATH}
53     COMMAND ${CMAKE_COMMAND} -E copy "${INFO_SOURCE_PATH}" "${INFO_PATH}"
54     DEPENDS ${INFO_SOURCE_PATH}
55     COMMENT "Generate ${INFO_FILE}"
56   )
57
58   list(APPEND TEST_DEPS ${INFO_PATH} ${PBTXT_PATH})
59   list(APPEND TEST_NAMES ${PREFIX})
60 endforeach(PREFIX)
61
62 ##
63 ## Copy testall
64 ##
65 set(TEST_RUNNER "${CMAKE_CURRENT_BINARY_DIR}/testall.sh")
66 set(TEST_RUNNER_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/testall.sh")
67
68 add_custom_command(
69   OUTPUT ${TEST_RUNNER}
70   COMMAND ${CMAKE_COMMAND} -E copy "${TEST_RUNNER_SOURCE}" "${TEST_RUNNER}"
71   DEPENDS ${TEST_RUNNER_SOURCE}
72   COMMENT "Generate test runner"
73 )
74
75 list(APPEND TEST_DEPS "${TEST_RUNNER}")
76
77 get_target_property(ARTIFACTS_BIN_PATH testDataGenerator BINARY_DIR)
78
79 # TODO Run both 2.8.0 and 2.10.1 test for jammy
80 if(ONE_UBUNTU_CODENAME_JAMMY)
81   set(VIRTUALENV "${NNCC_OVERLAY_DIR}/venv_2_10_1")
82 else()
83   set(VIRTUALENV "${NNCC_OVERLAY_DIR}/venv_2_8_0")
84 endif()
85
86 ###
87 ### Generate test.config
88 ###
89 set(TEST_CONFIG "${CMAKE_CURRENT_BINARY_DIR}/test.config")
90
91 # Get tf2tfliteV2 binary path
92 get_target_property(TF2TFLITEV2_BIN_DIR tf2tfliteV2 BINARY_DIR)
93 set(TF2TFLITEV2_PATH "${TF2TFLITEV2_BIN_DIR}/tf2tfliteV2.py")
94
95 add_custom_command(
96   OUTPUT ${TEST_CONFIG}
97   COMMAND ${CMAKE_COMMAND} -E remove -f ${TEST_CONFIG}
98   COMMAND ${CMAKE_COMMAND} -E echo 'TF2TFLITEV2_PATH=\"${TF2TFLITEV2_PATH}\"' >> ${TEST_CONFIG}
99   COMMAND ${CMAKE_COMMAND} -E echo 'VIRTUALENV=\"${VIRTUALENV}\"' >> ${TEST_CONFIG}
100   DEPENDS
101     tf2tfliteV2
102   COMMENT "Generate test configuration"
103 )
104
105 list(APPEND TEST_DEPS "${TEST_CONFIG}")
106
107 # This "tf2tfliteV2_conversion_test_deps" target enforces CMake to generate all the dependencies during "build" phase
108 add_custom_target(tf2tfliteV2_conversion_test_deps ALL DEPENDS ${TEST_DEPS})
109
110 # TODO This test takes a long time and will only be tested once a day.
111 # Run tests
112 # add_test(
113 #   NAME tf2tfliteV2_conversion_test
114 #   COMMAND "${TEST_RUNNER}"
115 #           "${TEST_CONFIG}"
116 #           "${CMAKE_CURRENT_BINARY_DIR}"
117 #           ${TEST_NAMES}
118 # )