Imported Upstream version 1.8.0
[platform/core/ml/nnfw.git] / compiler / tf2circle-value-pbtxt-remote-test / CMakeLists.txt
1 nnas_include(TargetRequire)
2
3 unset(REQUIRED_TARGETS)
4 list(APPEND REQUIRED_TARGETS tf2circle)
5 list(APPEND REQUIRED_TARGETS tfkit)
6 list(APPEND REQUIRED_TARGETS nnkit-run)
7 list(APPEND REQUIRED_TARGETS nnkit_tf_backend)
8 list(APPEND REQUIRED_TARGETS nnkit_randomize_action)
9 list(APPEND REQUIRED_TARGETS nnkit_HDF5_export_action)
10 list(APPEND REQUIRED_TARGETS nnkit_HDF5_import_action)
11 TargetRequire_Return(${REQUIRED_TARGETS})
12
13 message(STATUS "tf2circle-value_pbtxt-remote-test: run tests")
14
15 nncc_find_resource(TensorFlowTests)
16
17 #
18 # Copy [PREFIX]/test.pbtxt to PREFIX.pbtxt in binary folder
19 # Copy [PREFIX]/test.info to PREFIX.info in binary folder
20 # Copy [PREFIX]/customop.conf to PREFIX.customop.conf in binary folder
21 # Encode PREFIX.pbtxt to PREFIX.pb
22 #
23 set(TEST_REPO "${TensorFlowTests_DIR}")
24 set(TEST_PBTXT_FILENAME "test.pbtxt")
25 set(TEST_INFO_FILENAME "test.info")
26 set(TEST_CUSTOMOP_CONF_FILENAME "customop.conf")
27
28 unset(TESTCASES)
29
30 macro(add NAME)
31   list(APPEND TESTCASES ${NAME})
32 endmacro(add)
33
34 # Read "test.lst" if exists
35 include("test.lst" OPTIONAL)
36
37 # Do not make test if there are no remote machine information
38 if(NOT REMOTE_IP)
39   return()
40 endif(NOT REMOTE_IP)
41
42 if(NOT REMOTE_USER)
43   return()
44 endif(NOT REMOTE_USER)
45
46 # Do not make test if there are no testcases
47 if(NOT TESTCASES)
48   return()
49 endif(NOT TESTCASES)
50
51 unset(TEST_DEPS)
52 unset(TEST_NAMES)
53
54 foreach(PREFIX IN ITEMS ${TESTCASES})
55   if(NOT IS_DIRECTORY "${TEST_REPO}/${PREFIX}")
56     message(FATAL_ERROR "Missing '${PREFIX}' test")
57   endif()
58
59   set(PBTXT_SOURCE_PATH "${TEST_REPO}/${PREFIX}/${TEST_PBTXT_FILENAME}")
60   set(INFO_SOURCE_PATH "${TEST_REPO}/${PREFIX}/${TEST_INFO_FILENAME}")
61   set(CUSTOMOP_CONF_SOURCE_PATH "${TEST_REPO}/${PREFIX}/${TEST_CUSTOMOP_CONF_FILENAME}")
62
63   set(PBTXT_FILE "${PREFIX}.pbtxt")
64   set(PBTXT_PATH "${CMAKE_CURRENT_BINARY_DIR}/${PBTXT_FILE}")
65
66   set(INFO_FILE "${PREFIX}.info")
67   set(INFO_PATH "${CMAKE_CURRENT_BINARY_DIR}/${INFO_FILE}")
68
69   set(CUSTOMOP_CONF_FILE "${PREFIX}.${TEST_CUSTOMOP_CONF_FILENAME}") # ex) CustomOp_001.customop.conf
70   set(CUSTOMOP_CONF_PATH "${CMAKE_CURRENT_BINARY_DIR}/${CUSTOMOP_CONF_FILE}")
71
72   set(PB_FILE "${PREFIX}.pb")
73   set(PB_PATH "${CMAKE_CURRENT_BINARY_DIR}/${PB_FILE}")
74
75   # Copy .pbtxt
76   add_custom_command(OUTPUT ${PBTXT_PATH}
77     COMMAND ${CMAKE_COMMAND} -E copy "${PBTXT_SOURCE_PATH}" "${PBTXT_PATH}"
78     DEPENDS ${PBTXT_SOURCE_PATH}
79     COMMENT "Generate ${PBTXT_FILE}"
80   )
81
82   # Copy .info
83   add_custom_command(OUTPUT ${INFO_PATH}
84     COMMAND ${CMAKE_COMMAND} -E copy "${INFO_SOURCE_PATH}" "${INFO_PATH}"
85     DEPENDS ${INFO_SOURCE_PATH}
86     COMMENT "Generate ${INFO_FILE}"
87   )
88
89   # Generate .pb from .pbtxt
90   add_custom_command(OUTPUT ${PB_PATH}
91     COMMAND $<TARGET_FILE:tfkit> encode ${PBTXT_PATH} ${PB_PATH}
92     DEPENDS ${PBTXT_PATH}
93     COMMENT "Generate ${PB_FILE}"
94   )
95
96   list(APPEND TEST_DEPS ${INFO_PATH} ${PB_PATH})
97
98   if (EXISTS "${CUSTOMOP_CONF_SOURCE_PATH}")
99
100     # Copy customop.conf
101     add_custom_command(OUTPUT ${CUSTOMOP_CONF_PATH}
102       COMMAND ${CMAKE_COMMAND} -E copy "${CUSTOMOP_CONF_SOURCE_PATH}" "${CUSTOMOP_CONF_PATH}"
103       DEPENDS ${CUSTOMOP_CONF_SOURCE_PATH}
104       COMMENT "Generate ${CUSTOMOP_CONF_FILE}"
105     )
106
107     list(APPEND TEST_DEPS ${CUSTOMOP_CONF_PATH})
108
109   endif (EXISTS "${CUSTOMOP_CONF_SOURCE_PATH}")
110
111   list(APPEND TEST_NAMES ${PREFIX})
112 endforeach(PREFIX)
113
114 ##
115 ## Copy testall
116 ##
117 set(TEST_RUNNER "${CMAKE_CURRENT_BINARY_DIR}/testall.sh")
118 set(TEST_RUNNER_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/testall.sh")
119
120 add_custom_command(
121   OUTPUT ${TEST_RUNNER}
122   COMMAND ${CMAKE_COMMAND} -E copy "${TEST_RUNNER_SOURCE}" "${TEST_RUNNER}"
123   DEPENDS ${TEST_RUNNER_SOURCE}
124   COMMENT "Generate test runner"
125 )
126
127 list(APPEND TEST_DEPS "${TEST_RUNNER}")
128
129 ###
130 ### Generate test.config
131 ###
132 set(TEST_CONFIG "${CMAKE_CURRENT_BINARY_DIR}/test.config")
133
134 add_custom_command(
135   OUTPUT ${TEST_CONFIG}
136   COMMAND ${CMAKE_COMMAND} -E remove -f ${TEST_CONFIG}
137   COMMAND ${CMAKE_COMMAND} -E echo 'NNKIT_RUN_PATH=\"$<TARGET_FILE:nnkit-run>\"' >> ${TEST_CONFIG}
138   COMMAND ${CMAKE_COMMAND} -E echo 'TF_BACKEND_PATH=\"$<TARGET_FILE:nnkit_tf_backend>\"' >> ${TEST_CONFIG}
139   COMMAND ${CMAKE_COMMAND} -E echo 'TF2CIRCLE_PATH=\"$<TARGET_FILE:tf2circle>\"' >> ${TEST_CONFIG}
140   COMMAND ${CMAKE_COMMAND} -E echo 'RANDOMIZE_ACTION_PATH=\"$<TARGET_FILE:nnkit_randomize_action>\"' >> ${TEST_CONFIG}
141   COMMAND ${CMAKE_COMMAND} -E echo 'HDF5_EXPORT_ACTION_PATH=\"$<TARGET_FILE:nnkit_HDF5_export_action>\"' >> ${TEST_CONFIG}
142   COMMAND ${CMAKE_COMMAND} -E echo 'HDF5_IMPORT_ACTION_PATH=\"$<TARGET_FILE:nnkit_HDF5_import_action>\"' >> ${TEST_CONFIG}
143   COMMAND ${CMAKE_COMMAND} -E echo 'MODEL2NNPKG_PATH=\"${NNAS_PROJECT_SOURCE_DIR}/tools/nnpackage_tool/model2nnpkg/model2nnpkg.sh\"' >> ${TEST_CONFIG}
144   COMMAND ${CMAKE_COMMAND} -E echo 'RUNTIME_LIBRARY_PATH=\"${NNAS_PROJECT_SOURCE_DIR}/Product/out/\"' >> ${TEST_CONFIG}
145   DEPENDS
146     nnkit-run
147     nnkit_tf_backend
148     tf2circle
149     nnkit_randomize_action
150     nnkit_HDF5_export_action
151     nnkit_HDF5_import_action
152   COMMENT "Generate test configuration"
153 )
154
155 list(APPEND TEST_DEPS "${TEST_CONFIG}")
156
157 # This "tf2circle_value_pbtxt_remote_test_deps" target enforces CMake to generate all the dependencies during "build" phase
158 add_custom_target(tf2circle_value_pbtxt_remote_test_deps ALL DEPENDS ${TEST_DEPS})
159
160 # Run tests
161 add_test(
162   NAME tf2circle_value_pbtxt_remote_test
163   COMMAND "${TEST_RUNNER}"
164           "${TEST_CONFIG}"
165           "${CMAKE_CURRENT_BINARY_DIR}"
166           "${REMOTE_IP}"
167           "${REMOTE_USER}"
168           ${TEST_NAMES}
169 )