Imported Upstream version 1.12.0
[platform/core/ml/nnfw.git] / compiler / pota-quantization-value-test / CMakeLists.txt
1 unset(QUANTIZATION_VALUE_TEST)
2 unset(QUANTIZATION_VALUE_TEST_WITH_PARAM)
3
4 nnas_find_package(FlatBuffers QUIET)
5 if(NOT FlatBuffers_FOUND)
6   message(STATUS "Build pota-quantization-value-test: FAILED (missing FlatBuffers)")
7   return()
8 endif(NOT FlatBuffers_FOUND)
9
10 macro(addTest NAME GRANULARITY DTYPE)
11   list(APPEND QUANTIZATION_VALUE_TEST ${NAME})
12   list(APPEND QUANTIZATION_VALUE_TEST_WITH_PARAM ${NAME} ${GRANULARITY} ${DTYPE})
13 endmacro(addTest)
14
15 # Read "test.lst"
16 include("test.lst")
17 # Read "test.local.lst" if exists
18 include("test.local.lst" OPTIONAL)
19
20 unset(TEST_DEPS)
21
22 get_target_property(ARTIFACTS_BIN_PATH testDataGenerator BINARY_DIR)
23 get_target_property(SCHEMA_BIN_PATH mio_circle BINARY_DIR)
24
25 configure_file("${CMAKE_CURRENT_SOURCE_DIR}/gen_h5_explicit_inputs.py"
26                "${CMAKE_CURRENT_BINARY_DIR}/gen_h5_explicit_inputs.py" COPYONLY)
27
28 set(VIRTUALENV "${NNCC_OVERLAY_DIR}/venv_2_3_0")
29
30 ###
31 ### Generate test.config
32 ###
33 set(TEST_CONFIG "${CMAKE_CURRENT_BINARY_DIR}/test.config")
34
35 add_custom_command(
36   OUTPUT ${TEST_CONFIG}
37   COMMAND ${CMAKE_COMMAND} -E remove -f ${TEST_CONFIG}
38   COMMAND ${CMAKE_COMMAND} -E echo 'RECORD_MINMAX_PATH=\"$<TARGET_FILE:record-minmax>\"' >> ${TEST_CONFIG}
39   COMMAND ${CMAKE_COMMAND} -E echo 'CIRCLE_QUANTIZER_PATH=\"$<TARGET_FILE:circle-quantizer>\"' >> ${TEST_CONFIG}
40   COMMAND ${CMAKE_COMMAND} -E echo 'CIRCLE_TENSORDUMP_PATH=\"$<TARGET_FILE:circle-tensordump>\"' >> ${TEST_CONFIG}
41   COMMAND ${CMAKE_COMMAND} -E echo 'VIRTUALENV=\"${VIRTUALENV}\"' >> ${TEST_CONFIG}
42   DEPENDS record-minmax
43   DEPENDS circle-quantizer
44   DEPENDS circle-tensordump
45   COMMENT "Generate test configuration"
46 )
47
48 ###
49 ### Generate python interface for circle schema
50 ###
51 set(CIRCLE_SCHEMA_PYTHON_DIR "${CMAKE_CURRENT_BINARY_DIR}/circle")
52
53 add_custom_command(
54   OUTPUT ${CIRCLE_SCHEMA_PYTHON_DIR}
55   COMMAND ${CMAKE_COMMAND} -E remove_directory "${CIRCLE_SCHEMA_PYTHON_DIR}"
56   COMMAND "$<TARGET_FILE:flatbuffers::flatc>" --python
57   -o "${CMAKE_CURRENT_BINARY_DIR}" "${SCHEMA_BIN_PATH}/schema.fbs"
58   DEPENDS flatbuffers::flatc
59   COMMENT "Generate python interface for circle schema"
60 )
61
62 list(APPEND TEST_DEPS "${TEST_CONFIG}" "${CIRCLE_SCHEMA_PYTHON_DIR}")
63
64 # This enforces CMake to generate all the dependencies during "build" phase
65 add_custom_target(pota_quantization_value_test_deps ALL DEPENDS ${TEST_DEPS})
66
67 # Run tests
68 add_test(
69   NAME pota_fake_wquant_test
70   COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/test_fake_wquant.sh"
71           "${TEST_CONFIG}"
72           "${ARTIFACTS_BIN_PATH}"
73           ${QUANTIZATION_VALUE_TEST_WITH_PARAM}
74 )
75
76 add_test(
77   NAME pota_record_minmax_test
78   COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/test_record_minmax.sh"
79           "${TEST_CONFIG}"
80           "${ARTIFACTS_BIN_PATH}"
81           ${QUANTIZATION_VALUE_TEST_WITH_PARAM}
82 )
83
84 add_test(
85   NAME pota_quantization_test
86   COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/test_quantization.sh"
87           "${TEST_CONFIG}"
88           "${ARTIFACTS_BIN_PATH}"
89           ${QUANTIZATION_VALUE_TEST_WITH_PARAM}
90 )
91
92 set_tests_properties(pota_record_minmax_test PROPERTIES DEPENDS pota_fake_wquant_test)
93 set_tests_properties(pota_quantization_test PROPERTIES DEPENDS pota_record_minmax_test)