Imported Upstream version 1.7.0
[platform/core/ml/nnfw.git] / compiler / luci / tests / CMakeLists.txt
1 # TODO use local test.recipe files for small networks
2 file(GLOB RECIPES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*/test.recipe")
3
4 foreach(RECIPE IN ITEMS ${RECIPES})
5   get_filename_component(RECIPE_PREFIX ${RECIPE} DIRECTORY)
6
7   set(RECIPE_SOURCE_FILE "${RECIPE_PREFIX}.recipe")
8   set(RECIPE_OUTPUT_FILE "${RECIPE_PREFIX}.tflite")
9   set(CIRCLE_OUTPUT_FILE "${RECIPE_PREFIX}.circle")
10
11   # Copy .recipe
12   add_custom_command(OUTPUT "${RECIPE_SOURCE_FILE}"
13                      COMMAND ${CMAKE_COMMAND} -E copy_if_different
14                              "${CMAKE_CURRENT_SOURCE_DIR}/${RECIPE}" "${RECIPE_SOURCE_FILE}"
15                      DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/${RECIPE}"
16                      COMMENT "Generating ${RECIPE_SOURCE_FILE}")
17
18   # Generate .tflite
19   add_custom_command(OUTPUT "${RECIPE_OUTPUT_FILE}"
20                      COMMAND tflchef-file "${RECIPE_SOURCE_FILE}" "${RECIPE_OUTPUT_FILE}"
21                      DEPENDS tflchef-file "${RECIPE_SOURCE_FILE}"
22                      COMMENT "Generating ${RECIPE_OUTPUT_FILE}")
23
24   # Generate .circle
25   add_custom_command(OUTPUT "${CIRCLE_OUTPUT_FILE}"
26                      COMMAND tflite2circle "${RECIPE_OUTPUT_FILE}" "${CIRCLE_OUTPUT_FILE}"
27                      DEPENDS tflite2circle "${RECIPE_OUTPUT_FILE}"
28                      COMMENT "Generating ${CIRCLE_OUTPUT_FILE}")
29
30   list(APPEND TESTFILES "${CIRCLE_OUTPUT_FILE}")
31 endforeach(RECIPE)
32
33 # Generate from res/TensorFlowLiteRecipes
34 nncc_find_resource(TensorFlowLiteRecipes)
35 set(TENSORFLOWLITERECIPES_DIR "${TensorFlowLiteRecipes_DIR}")
36
37 file(GLOB RECIPES RELATIVE ${TENSORFLOWLITERECIPES_DIR} "${TENSORFLOWLITERECIPES_DIR}/*/test.recipe")
38
39 foreach(RECIPE IN ITEMS ${RECIPES})
40   get_filename_component(RECIPE_PREFIX ${RECIPE} DIRECTORY)
41
42   set(RECIPE_SOURCE_FILE "${RECIPE_PREFIX}.recipe")
43   set(RECIPE_OUTPUT_FILE "${RECIPE_PREFIX}.tflite")
44   set(CIRCLE_OUTPUT_FILE "${RECIPE_PREFIX}.circle")
45
46   # Copy .recipe
47   add_custom_command(OUTPUT "${RECIPE_SOURCE_FILE}"
48                      COMMAND ${CMAKE_COMMAND} -E copy_if_different
49                              "${TENSORFLOWLITERECIPES_DIR}/${RECIPE}" "${RECIPE_SOURCE_FILE}"
50                      DEPENDS "${TENSORFLOWLITERECIPES_DIR}/${RECIPE}"
51                      COMMENT "Generating ${RECIPE_SOURCE_FILE}")
52
53   # Generate .tflite
54   add_custom_command(OUTPUT "${RECIPE_OUTPUT_FILE}"
55                      COMMAND tflchef-file "${RECIPE_SOURCE_FILE}" "${RECIPE_OUTPUT_FILE}"
56                      DEPENDS tflchef-file "${RECIPE_SOURCE_FILE}"
57                      COMMENT "Generating ${RECIPE_OUTPUT_FILE}")
58
59   # Generate .circle
60   add_custom_command(OUTPUT "${CIRCLE_OUTPUT_FILE}"
61                      COMMAND tflite2circle "${RECIPE_OUTPUT_FILE}" "${CIRCLE_OUTPUT_FILE}"
62                      DEPENDS tflite2circle "${RECIPE_OUTPUT_FILE}"
63                      COMMENT "Generating ${CIRCLE_OUTPUT_FILE}")
64
65   list(APPEND TESTFILES "${CIRCLE_OUTPUT_FILE}")
66 endforeach(RECIPE)
67
68 # Generate from res/CircleRecipes
69 # NOTE duplicate names should not exist or test may be incorrect
70 nncc_find_resource(CircleRecipes)
71 set(CIRCLERECIPES_DIR "${CircleRecipes_DIR}")
72
73 file(GLOB RECIPES2 RELATIVE ${CIRCLERECIPES_DIR} "${CIRCLERECIPES_DIR}/*/test.recipe")
74
75 foreach(RECIPE IN ITEMS ${RECIPES2})
76   get_filename_component(RECIPE_PREFIX ${RECIPE} DIRECTORY)
77
78   set(RECIPE_SOURCE_FILE "${RECIPE_PREFIX}.recipe")
79   set(CIRCLE_OUTPUT_FILE "${RECIPE_PREFIX}.circle")
80
81   # Copy .recipe
82   add_custom_command(OUTPUT "${RECIPE_SOURCE_FILE}"
83                      COMMAND ${CMAKE_COMMAND} -E copy_if_different
84                              "${CIRCLERECIPES_DIR}/${RECIPE}" "${RECIPE_SOURCE_FILE}"
85                      DEPENDS "${CIRCLERECIPES_DIR}/${RECIPE}"
86                      COMMENT "Generating ${RECIPE_SOURCE_FILE}")
87
88   # Generate .circle
89   add_custom_command(OUTPUT "${CIRCLE_OUTPUT_FILE}"
90                      COMMAND circlechef-file "${RECIPE_SOURCE_FILE}" "${CIRCLE_OUTPUT_FILE}"
91                      DEPENDS circlechef-file "${RECIPE_SOURCE_FILE}"
92                      COMMENT "Generating ${CIRCLE_OUTPUT_FILE}")
93
94   list(APPEND TESTFILES "${CIRCLE_OUTPUT_FILE}")
95 endforeach(RECIPE)
96
97 # Add a dummy target to create a target-level dependency.
98 # TODO Find a way to create dependency between CTest tests (added below) and generated testfiles.
99 add_custom_target(luci_testfiles ALL DEPENDS ${TESTFILES})
100
101 macro(addread NAME)
102   list(APPEND DAILY_READ_TESTS ${NAME})
103 endmacro(addread)
104
105 macro(addwrite NAME)
106   list(APPEND DAILY_WRITE_TESTS ${NAME})
107 endmacro(addwrite)
108
109 # Read "test.lst"
110 include("test.lst")
111 # Read "test.local.lst" if exists
112 include("test.local.lst" OPTIONAL)
113
114 add_test(NAME luci_unit_readtest
115   COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/readverify.sh"
116           "${CMAKE_CURRENT_BINARY_DIR}"
117           "$<TARGET_FILE:luci_readtester>"
118           ${DAILY_READ_TESTS}
119 )
120
121 add_test(NAME luci_unit_writetest
122   COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/writeverify.sh"
123           "${CMAKE_CURRENT_BINARY_DIR}"
124           "$<TARGET_FILE:luci_writetester>"
125           ${DAILY_WRITE_TESTS}
126 )