Imported Upstream version 1.7.0
[platform/core/ml/nnfw.git] / compiler / circlechef / tests / CMakeLists.txt
1 nncc_find_resource(CircleRecipes)
2 set(CIRCLERECIPES_DIR "${CircleRecipes_DIR}")
3
4 file(GLOB RECIPES RELATIVE ${CIRCLERECIPES_DIR} "${CIRCLERECIPES_DIR}/*/test.recipe")
5
6 foreach(RECIPE IN ITEMS ${RECIPES})
7   get_filename_component(RECIPE_PREFIX ${RECIPE} DIRECTORY)
8
9   set(RECIPE_SOURCE_FILE "${RECIPE_PREFIX}.recipe")
10   set(RECIPE_OUTPUT_FILE "${RECIPE_PREFIX}.circle")
11
12   # Copy .recipe
13   add_custom_command(OUTPUT ${RECIPE_SOURCE_FILE}
14                      COMMAND ${CMAKE_COMMAND} -E copy_if_different
15                              "${CIRCLERECIPES_DIR}/${RECIPE}" ${RECIPE_SOURCE_FILE}
16                      DEPENDS "${CIRCLERECIPES_DIR}/${RECIPE}"
17                      COMMENT "Generating ${RECIPE_SOURCE_FILE}")
18
19   # Generate .circle
20   add_custom_command(OUTPUT ${RECIPE_OUTPUT_FILE}
21                      COMMAND circlechef-file ${RECIPE_SOURCE_FILE} ${RECIPE_OUTPUT_FILE}
22                      DEPENDS circlechef-file ${RECIPE_SOURCE_FILE}
23                      COMMENT "Generating ${RECIPE_OUTPUT_FILE}")
24
25   list(APPEND TESTS ${RECIPE_PREFIX})
26   list(APPEND TESTFILES ${RECIPE_OUTPUT_FILE})
27 endforeach(RECIPE)
28
29 #Test circlechef-reverse
30 file(GLOB GEN_CIRCLEFILES RELATIVE ${CIRCLERECIPES_DIR} "${CIRCLERECIPES_DIR}/*/test.reverse")
31 # Note: While in development, circlechef-reverse may not handle the operator.
32 #       To separate this linkage scan empty test.reverse for test targets for circlechef-reverse.
33
34 foreach(CIRCLEFILE IN ITEMS ${GEN_CIRCLEFILES})
35   get_filename_component(CIRCLE_PREFIX ${CIRCLEFILE} DIRECTORY)
36
37   # file from above circlechef-file block
38   # use circle file as input of circlechef-reverse generated from circlechef-file
39   set(RECIPE_OUTPUT_FILE "${CIRCLE_PREFIX}.circle")
40   set(RECIPE_GEN_OUTPUT_FILE "${CIRCLE_PREFIX}.gen.recipe")
41   set(RECIPE_GEN_OUTPUT_FILE2 "${CIRCLE_PREFIX}.gen.circle")
42
43   # Generate .gen.recipe from generated .circle
44   add_custom_command(OUTPUT ${RECIPE_GEN_OUTPUT_FILE}
45                      COMMAND circlechef-reverse ${RECIPE_OUTPUT_FILE} ${RECIPE_GEN_OUTPUT_FILE}
46                      DEPENDS circlechef-reverse ${RECIPE_OUTPUT_FILE}
47                      COMMENT "Generating ${RECIPE_GEN_OUTPUT_FILE}")
48
49   # now we are going to generate .gen.circle from .gen.recipe
50   # to check generated .gen.recipe file is correct by using it.
51   # as weight values may be different, binary comparision is not acceptable.
52   add_custom_command(OUTPUT ${RECIPE_GEN_OUTPUT_FILE2}
53                      COMMAND circlechef-file ${RECIPE_GEN_OUTPUT_FILE} ${RECIPE_GEN_OUTPUT_FILE2}
54                      DEPENDS circlechef-file ${RECIPE_GEN_OUTPUT_FILE}
55                      COMMENT "Generating ${RECIPE_GEN_OUTPUT_FILE2}")
56
57   list(APPEND TESTS ${CIRCLE_PREFIX}.gen)
58   list(APPEND TESTFILES ${RECIPE_GEN_OUTPUT_FILE2})
59 endforeach(CIRCLEFILE)
60
61 # Add a dummy target to create a target-level dependency.
62 # TODO Find a way to create a dependency between circlechef_test and generated testfiles.
63 add_custom_target(circlechef_testfiles ALL DEPENDS ${TESTFILES})
64
65 # Using circle_verify for temporary as it only calls flatbuffer validate
66 # TODO do testing with running the model with runtime/interpreter
67 add_test(NAME circlechef_test
68          COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/runvalidate.sh"
69                  $<TARGET_FILE:circle-verify>
70                  ${TESTS})