Imported Upstream version 1.8.0
[platform/core/ml/nnfw.git] / compiler / circle2circle-dredd-recipe-test / CMakeLists.txt
1 nnas_include(TargetRequire)
2
3 unset(REQUIRED_TARGETS)
4 list(APPEND REQUIRED_TARGETS circle-inspect)
5 list(APPEND REQUIRED_TARGETS circle-verify)
6 list(APPEND REQUIRED_TARGETS circle2circle)
7 list(APPEND REQUIRED_TARGETS dredd_rule_lib)
8 TargetRequire_Return(${REQUIRED_TARGETS})
9
10 unset(TEST_DEPS)
11 unset(TEST_NAMES)
12
13 set(options "")
14 set(oneValueArgs "")
15 set(multiValueArgs PASS)
16
17 get_target_property(ARTIFACTS_BIN_PATH testDataGenerator BINARY_DIR)
18
19 macro(Add RECIPE)
20   cmake_parse_arguments(ARG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
21   unset(OPT_OPTIONS)
22   foreach(src ${ARG_PASS})
23     # option = "--${src}"
24     list(APPEND OPT_OPTIONS "--${src}")
25   endforeach(src ${ARG_PASS})
26
27   set(CIRCLE_FILE "${RECIPE}.circle")
28   set(CIRCLE_PATH "${ARTIFACTS_BIN_PATH}/${CIRCLE_FILE}")
29
30   set(OPT_CIRCLE_FILE "${RECIPE}.opt.circle")
31   set(OPT_CIRCLE_OUTPUT_PATH "${CMAKE_CURRENT_BINARY_DIR}/${OPT_CIRCLE_FILE}")
32
33   # Generate optimized .circle
34   add_custom_command(OUTPUT ${OPT_CIRCLE_OUTPUT_PATH}
35     COMMAND $<TARGET_FILE:circle2circle> ${OPT_OPTIONS} ${CIRCLE_PATH} ${OPT_CIRCLE_OUTPUT_PATH}
36     DEPENDS $<TARGET_FILE:circle2circle> ${CIRCLE_PATH}
37     COMMENT "Generate ${OPT_CIRCLE_FILE}"
38   )
39
40   list(APPEND TEST_DEPS ${OPT_CIRCLE_OUTPUT_PATH})
41   list(APPEND TEST_NAMES ${RECIPE})
42 endmacro(Add)
43
44 # Read "test.lst"
45 include("test.lst")
46
47 ##
48 ## Copy testall
49 ##
50 set(TEST_RUNNER "${CMAKE_CURRENT_BINARY_DIR}/testall.sh")
51 set(TEST_RUNNER_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/testall.sh")
52
53 add_custom_command(
54   OUTPUT ${TEST_RUNNER}
55   COMMAND ${CMAKE_COMMAND} -E copy "${TEST_RUNNER_SOURCE}" "${TEST_RUNNER}"
56   DEPENDS ${TEST_RUNNER_SOURCE}
57   COMMENT "Generate test runner"
58 )
59
60 list(APPEND TEST_DEPS "${TEST_RUNNER}")
61
62 ###
63 ### Generate test.config
64 ###
65 set(TEST_CONFIG "${CMAKE_CURRENT_BINARY_DIR}/test.config")
66
67 add_custom_command(
68   OUTPUT ${TEST_CONFIG}
69   COMMAND ${CMAKE_COMMAND} -E remove -f ${TEST_CONFIG}
70   COMMAND ${CMAKE_COMMAND} -E echo 'CIRCLE_INSPECT_PATH=\"$<TARGET_FILE:circle-inspect>\"' >> ${TEST_CONFIG}
71   COMMAND ${CMAKE_COMMAND} -E echo 'CIRCLE_VERIFY_PATH=\"$<TARGET_FILE:circle-verify>\"' >> ${TEST_CONFIG}
72   DEPENDS 
73     circle-inspect
74     circle-verify
75   COMMENT "Generate test configuration"
76 )
77
78 list(APPEND TEST_DEPS "${TEST_CONFIG}")
79
80 #
81 # copy rule-lib.sh (a library of shell script functions)
82 #
83
84 # getting path for rule-lib.sh in dredd-rule-lib
85 get_target_property(DREDD_RULE_LIB_DIR dredd_rule_lib BINARY_DIR)
86
87 set(RULE_LIB_SOURCE_PATH "${DREDD_RULE_LIB_DIR}/rule-lib.sh")
88 set(RULE_LIB_BINARY_PATH "${CMAKE_CURRENT_BINARY_DIR}/rule-lib.sh")
89
90 add_custom_command(
91   OUTPUT ${RULE_LIB_BINARY_PATH}
92   COMMAND ${CMAKE_COMMAND} -E copy "${RULE_LIB_SOURCE_PATH}" "${RULE_LIB_BINARY_PATH}"
93   DEPENDS ${RULE_LIB_SOURCE_PATH}
94   COMMENT "Generate rule lib"
95 )
96
97 list(APPEND TEST_DEPS "${RULE_LIB_BINARY_PATH}")
98
99 # Generate dependencies
100 add_custom_target(circle2circle_dredd_recipe_test ALL DEPENDS ${TEST_DEPS})
101 add_dependencies(circle2circle_dredd_recipe_test common_artifacts_deps)
102
103 get_target_property(ARTIFACTS_BIN_PATH testDataGenerator BINARY_DIR)
104
105 # Run tests
106 add_test(
107   NAME circle2circle_dredd_recipe_test
108   COMMAND "${TEST_RUNNER}"
109           "${TEST_CONFIG}"
110           "${ARTIFACTS_BIN_PATH}"
111           ${TEST_NAMES}
112 )