1 nncc_find_resource(CircleRecipes)
2 set(CIRCLERECIPES_DIR "${CircleRecipes_DIR}")
4 file(GLOB RECIPES RELATIVE ${CIRCLERECIPES_DIR} "${CIRCLERECIPES_DIR}/*/test.recipe")
6 foreach(RECIPE IN ITEMS ${RECIPES})
7 get_filename_component(RECIPE_PREFIX ${RECIPE} DIRECTORY)
9 set(RECIPE_SOURCE_FILE "${RECIPE_PREFIX}.recipe")
10 set(RECIPE_OUTPUT_FILE "${RECIPE_PREFIX}.circle")
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}")
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}")
25 list(APPEND TESTS ${RECIPE_PREFIX})
26 list(APPEND TESTFILES ${RECIPE_OUTPUT_FILE})
30 file(GLOB RECIPES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*/test.recipe")
32 foreach(RECIPE IN ITEMS ${RECIPES})
33 get_filename_component(RECIPE_PREFIX ${RECIPE} DIRECTORY)
35 set(RECIPE_SOURCE_FILE "${RECIPE_PREFIX}.recipe")
36 set(RECIPE_OUTPUT_FILE "${RECIPE_PREFIX}.circle")
39 add_custom_command(OUTPUT ${RECIPE_SOURCE_FILE}
40 COMMAND ${CMAKE_COMMAND} -E copy_if_different
41 "${CMAKE_CURRENT_SOURCE_DIR}/${RECIPE}" ${RECIPE_SOURCE_FILE}
42 DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/${RECIPE}"
43 COMMENT "Generating ${RECIPE_SOURCE_FILE}")
46 add_custom_command(OUTPUT ${RECIPE_OUTPUT_FILE}
47 COMMAND circlechef-file ${RECIPE_SOURCE_FILE} ${RECIPE_OUTPUT_FILE}
48 DEPENDS circlechef-file ${RECIPE_SOURCE_FILE}
49 COMMENT "Generating ${RECIPE_OUTPUT_FILE}")
51 list(APPEND TESTS ${RECIPE_PREFIX})
52 list(APPEND TESTFILES ${RECIPE_OUTPUT_FILE})
55 #Test circlechef-reverse
56 file(GLOB GEN_CIRCLEFILES RELATIVE ${CIRCLERECIPES_DIR} "${CIRCLERECIPES_DIR}/*/test.reverse")
57 # Note: While in development, circlechef-reverse may not handle the operator.
58 # To separate this linkage scan empty test.reverse for test targets for circlechef-reverse.
60 foreach(CIRCLEFILE IN ITEMS ${GEN_CIRCLEFILES})
61 get_filename_component(CIRCLE_PREFIX ${CIRCLEFILE} DIRECTORY)
63 # file from above circlechef-file block
64 # use circle file as input of circlechef-reverse generated from circlechef-file
65 set(RECIPE_OUTPUT_FILE "${CIRCLE_PREFIX}.circle")
66 set(RECIPE_GEN_OUTPUT_FILE "${CIRCLE_PREFIX}.gen.recipe")
67 set(RECIPE_GEN_OUTPUT_FILE2 "${CIRCLE_PREFIX}.gen.circle")
69 # Generate .gen.recipe from generated .circle
70 add_custom_command(OUTPUT ${RECIPE_GEN_OUTPUT_FILE}
71 COMMAND circlechef-reverse ${RECIPE_OUTPUT_FILE} ${RECIPE_GEN_OUTPUT_FILE}
72 DEPENDS circlechef-reverse ${RECIPE_OUTPUT_FILE}
73 COMMENT "Generating ${RECIPE_GEN_OUTPUT_FILE}")
75 # now we are going to generate .gen.circle from .gen.recipe
76 # to check generated .gen.recipe file is correct by using it.
77 # as weight values may be different, binary comparision is not acceptable.
78 add_custom_command(OUTPUT ${RECIPE_GEN_OUTPUT_FILE2}
79 COMMAND circlechef-file ${RECIPE_GEN_OUTPUT_FILE} ${RECIPE_GEN_OUTPUT_FILE2}
80 DEPENDS circlechef-file ${RECIPE_GEN_OUTPUT_FILE}
81 COMMENT "Generating ${RECIPE_GEN_OUTPUT_FILE2}")
83 list(APPEND TESTS ${CIRCLE_PREFIX}.gen)
84 list(APPEND TESTFILES ${RECIPE_GEN_OUTPUT_FILE2})
85 endforeach(CIRCLEFILE)
87 # Test local circlechef-reverse
88 file(GLOB GEN_CIRCLEFILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*/test.reverse")
90 foreach(CIRCLEFILE IN ITEMS ${GEN_CIRCLEFILES})
91 get_filename_component(CIRCLE_PREFIX ${CIRCLEFILE} DIRECTORY)
93 set(RECIPE_OUTPUT_FILE "${CIRCLE_PREFIX}.circle")
94 set(RECIPE_GEN_OUTPUT_FILE "${CIRCLE_PREFIX}.gen.recipe")
95 set(RECIPE_GEN_OUTPUT_FILE2 "${CIRCLE_PREFIX}.gen.circle")
97 # Generate .gen.recipe from generated .circle
98 add_custom_command(OUTPUT ${RECIPE_GEN_OUTPUT_FILE}
99 COMMAND circlechef-reverse ${RECIPE_OUTPUT_FILE} ${RECIPE_GEN_OUTPUT_FILE}
100 DEPENDS circlechef-reverse ${RECIPE_OUTPUT_FILE}
101 COMMENT "Generating ${RECIPE_GEN_OUTPUT_FILE}")
103 add_custom_command(OUTPUT ${RECIPE_GEN_OUTPUT_FILE2}
104 COMMAND circlechef-file ${RECIPE_GEN_OUTPUT_FILE} ${RECIPE_GEN_OUTPUT_FILE2}
105 DEPENDS circlechef-file ${RECIPE_GEN_OUTPUT_FILE}
106 COMMENT "Generating ${RECIPE_GEN_OUTPUT_FILE2}")
108 list(APPEND TESTS ${CIRCLE_PREFIX}.gen)
109 list(APPEND TESTFILES ${RECIPE_GEN_OUTPUT_FILE2})
110 endforeach(CIRCLEFILE)
112 # Add a dummy target to create a target-level dependency.
113 # TODO Find a way to create a dependency between circlechef_test and generated testfiles.
114 add_custom_target(circlechef_testfiles ALL DEPENDS ${TESTFILES})
116 # Using circle_verify for temporary as it only calls flatbuffer validate
117 # TODO do testing with running the model with runtime/interpreter
118 add_test(NAME circlechef_test
119 COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/runvalidate.sh"
120 $<TARGET_FILE:circle-verify>