[mocotest/onnx] Generate test file only on change (#4106)
author박종현/On-Device Lab(SR)/Staff Engineer/삼성전자 <jh1302.park@samsung.com>
Fri, 5 Jul 2019 01:04:45 +0000 (10:04 +0900)
committerGitHub Enterprise <noreply-CODE@samsung.com>
Fri, 5 Jul 2019 01:04:45 +0000 (10:04 +0900)
The current implementation always copies and generates test files. With
this commit, test files are copied and generated only when it is
necessary.

Signed-off-by: Jonghyun Park <jh1302.park@samsung.com>
contrib/mocotest-onnx/CMakeLists.txt

index 1d50c47..385a2a7 100644 (file)
@@ -14,27 +14,40 @@ endif(NOT TARGET onnxkit)
 # Encode Testcase.pbtxt to Testcase.pb
 #
 set(TEST_PBTXT_FILE "test.pbtxt")
+set(TEST_REPO "${CMAKE_CURRENT_SOURCE_DIR}") # Where to find tests
+set(TEST_SPACE "${CMAKE_CURRENT_BINARY_DIR}") # Where to run tests
 
 file(GLOB PBTXTFILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*/${TEST_PBTXT_FILE}")
 
+unset(TEST_DEPS)
+
 foreach(PBTXTFILE IN ITEMS ${PBTXTFILES})
   get_filename_component(DIR_NAME ${PBTXTFILE} DIRECTORY)
 
   set(PBTXT_SOURCE_FILE "${DIR_NAME}.pbtxt")
-  set(PBTXT_SOURCE_TARGET moco_onnx_${DIR_NAME}_pbtxt)
+  set(PBTXT_SOURCE_PATH "${TEST_SPACE}/${PBTXT_SOURCE_FILE}")
 
   set(PB_OUTPUT_FILE "${DIR_NAME}.pb")
-  set(PB_OUTPUT_TARGET moco_onnx_${DIR_NAME}_pb)
+  set(PB_OUTPUT_PATH "${TEST_SPACE}/${PB_OUTPUT_FILE}")
 
   # Copy files
-  add_custom_target(${PBTXT_SOURCE_TARGET}
-                    ALL ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/${PBTXTFILE}"
-                                                "${CMAKE_CURRENT_BINARY_DIR}/${PBTXT_SOURCE_FILE}"
-                    COMMENT "Copy ${PBTXT_SOURCE_FILE}")
+  add_custom_command(
+    OUTPUT ${PBTXT_SOURCE_PATH}
+    COMMAND ${CMAKE_COMMAND} -E copy "${TEST_REPO}/${PBTXTFILE}" "${PBTXT_SOURCE_PATH}"
+    COMMENT "Copy ${PBTXT_SOURCE_FILE}"
+    DEPENDS "${TEST_REPO}/${PBTXTFILE}"
+  )
 
   # Use onnxkit to encode
-  add_custom_target(${PB_OUTPUT_TARGET}
-                    ALL $<TARGET_FILE:onnxkit> encode ${PBTXT_SOURCE_FILE} ${PB_OUTPUT_FILE}
-                    DEPENDS ${PBTXT_SOURCE_TARGET}
-                    COMMENT "Generate ${PB_OUTPUT_FILE}")
+  add_custom_command(
+    OUTPUT ${PB_OUTPUT_PATH}
+    COMMAND $<TARGET_FILE:onnxkit> encode ${PBTXT_SOURCE_PATH} ${PB_OUTPUT_PATH}
+    DEPENDS ${PBTXT_SOURCE_PATH}
+    COMMENT "Generate ${PB_OUTPUT_FILE}"
+  )
+
+  list(APPEND TEST_DEPS "${PB_OUTPUT_PATH}")
 endforeach(PBTXTFILE)
+
+# This target enforces CMake to generate all the dependencies during "build" phase
+add_custom_target(mocotest_onnx_deps ALL DEPENDS ${TEST_DEPS})