Tom Finegan | 4db04d3 | 2017-02-23 14:37:27 -0800 | [diff] [blame] | 1 | ## |
| 2 | ## Copyright (c) 2017, Alliance for Open Media. All rights reserved |
| 3 | ## |
| 4 | ## This source code is subject to the terms of the BSD 2 Clause License and |
| 5 | ## the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License |
| 6 | ## was not distributed with this source code in the LICENSE file, you can |
| 7 | ## obtain it at www.aomedia.org/license/software. If the Alliance for Open |
| 8 | ## Media Patent License 1.0 was not distributed with this source code in the |
| 9 | ## PATENTS file, you can obtain it at www.aomedia.org/license/patent. |
| 10 | ## |
Tom Finegan | 4f7e104 | 2017-03-01 10:25:16 -0800 | [diff] [blame^] | 11 | include("${AOM_ROOT}/test/test_data_util.cmake") |
| 12 | |
Tom Finegan | 4db04d3 | 2017-02-23 14:37:27 -0800 | [diff] [blame] | 13 | set(AOM_UNIT_TEST_WRAPPER_SOURCES |
| 14 | "${AOM_CONFIG_DIR}/usage_exit.c" |
| 15 | "${AOM_ROOT}/test/test_libaom.cc") |
| 16 | |
| 17 | set(AOM_UNIT_TEST_COMMON_SOURCES |
| 18 | "${AOM_ROOT}/test/acm_random.h" |
| 19 | "${AOM_ROOT}/test/clear_system_state.h" |
| 20 | "${AOM_ROOT}/test/codec_factory.h" |
| 21 | "${AOM_ROOT}/test/convolve_test.cc" |
| 22 | "${AOM_ROOT}/test/function_equivalence_test.h" |
| 23 | "${AOM_ROOT}/test/md5_helper.h" |
| 24 | "${AOM_ROOT}/test/register_state_check.h" |
| 25 | "${AOM_ROOT}/test/transform_test_base.h" |
| 26 | "${AOM_ROOT}/test/util.h" |
| 27 | "${AOM_ROOT}/test/video_source.h") |
| 28 | |
| 29 | if (CONFIG_ACCOUNTING) |
| 30 | set(AOM_UNIT_TEST_COMMON_SOURCES |
| 31 | ${AOM_UNIT_TEST_COMMON_SOURCES} |
| 32 | "${AOM_ROOT}/test/accounting_test.cc") |
| 33 | endif () |
| 34 | |
| 35 | if (CONFIG_ADAPT_SCAN) |
| 36 | set(AOM_UNIT_TEST_COMMON_SOURCES |
| 37 | ${AOM_UNIT_TEST_COMMON_SOURCES} |
| 38 | "${AOM_ROOT}/test/scan_test.cc") |
| 39 | endif () |
| 40 | |
| 41 | if (CONFIG_GLOBAL_MOTION OR CONFIG_WARPED_MOTION) |
| 42 | if (HAVE_SSE2) |
| 43 | # TODO: not sure if this is intrinsics or a wrapper calling intrin/asm. |
| 44 | set(AOM_UNIT_TEST_COMMON_SOURCES |
| 45 | ${AOM_UNIT_TEST_COMMON_SOURCES} |
| 46 | "${AOM_ROOT}/test/warp_filter_test.cc") |
| 47 | endif () |
| 48 | endif () |
| 49 | |
| 50 | set(AOM_UNIT_TEST_DECODER_SOURCES |
| 51 | "${AOM_ROOT}/test/decode_api_test.cc" |
| 52 | "${AOM_ROOT}/test/decode_test_driver.cc" |
| 53 | "${AOM_ROOT}/test/decode_test_driver.h" |
| 54 | "${AOM_ROOT}/test/ivf_video_source.h") |
| 55 | |
| 56 | set(AOM_UNIT_TEST_ENCODER_SOURCES |
| 57 | "${AOM_ROOT}/test/altref_test.cc" |
| 58 | "${AOM_ROOT}/test/aq_segment_test.cc" |
| 59 | "${AOM_ROOT}/test/datarate_test.cc" |
| 60 | "${AOM_ROOT}/test/dct16x16_test.cc" |
| 61 | "${AOM_ROOT}/test/dct32x32_test.cc" |
| 62 | "${AOM_ROOT}/test/encode_api_test.cc" |
| 63 | "${AOM_ROOT}/test/encode_test_driver.cc" |
| 64 | "${AOM_ROOT}/test/encode_test_driver.h" |
| 65 | "${AOM_ROOT}/test/error_resilience_test.cc" |
| 66 | "${AOM_ROOT}/test/i420_video_source.h" |
| 67 | "${AOM_ROOT}/test/sad_test.cc" |
| 68 | "${AOM_ROOT}/test/y4m_test.cc" |
| 69 | "${AOM_ROOT}/test/y4m_video_source.h" |
| 70 | "${AOM_ROOT}/test/yuv_video_source.h") |
| 71 | |
| 72 | set(AOM_DECODE_PERF_TEST_SOURCES "${AOM_ROOT}/test/decode_perf_test.cc") |
| 73 | set(AOM_ENCODE_PERF_TEST_SOURCES "${AOM_ROOT}/test/encode_perf_test.cc") |
| 74 | set(AOM_UNIT_TEST_WEBM_SOURCES "${AOM_ROOT}/test/webm_video_source.h") |
| 75 | |
| 76 | set(AOM_TEST_INTRA_PRED_SPEED_SOURCES |
| 77 | "${AOM_CONFIG_DIR}/usage_exit.c" |
| 78 | "${AOM_ROOT}/test/test_intra_pred_speed.cc") |
| 79 | |
| 80 | if (CONFIG_AV1) |
| 81 | set(AOM_UNIT_TEST_COMMON_SOURCES |
| 82 | ${AOM_UNIT_TEST_COMMON_SOURCES} |
| 83 | "${AOM_ROOT}/test/av1_convolve_optimz_test.cc" |
| 84 | "${AOM_ROOT}/test/av1_convolve_test.cc" |
| 85 | "${AOM_ROOT}/test/av1_fwd_txfm1d_test.cc" |
| 86 | "${AOM_ROOT}/test/av1_fwd_txfm2d_test.cc" |
| 87 | "${AOM_ROOT}/test/av1_inv_txfm1d_test.cc" |
| 88 | "${AOM_ROOT}/test/av1_inv_txfm2d_test.cc" |
| 89 | "${AOM_ROOT}/test/av1_txfm_test.cc" |
| 90 | "${AOM_ROOT}/test/av1_txfm_test.h" |
| 91 | "${AOM_ROOT}/test/intrapred_test.cc" |
| 92 | "${AOM_ROOT}/test/lpf_8_test.cc" |
| 93 | "${AOM_ROOT}/test/simd_cmp_impl.h") |
| 94 | |
| 95 | if (CONFIG_CDEF) |
| 96 | set(AOM_UNIT_TEST_COMMON_SOURCES |
| 97 | ${AOM_UNIT_TEST_COMMON_SOURCES} |
| 98 | "${AOM_ROOT}/test/clpf_test.cc") |
| 99 | endif () |
| 100 | |
| 101 | if (CONFIG_FILTER_INTRA) |
| 102 | if (HAVE_SSE4_1) |
| 103 | set(AOM_UNIT_TEST_COMMON_SOURCES |
| 104 | ${AOM_UNIT_TEST_COMMON_SOURCES} |
| 105 | # TODO: not sure if this intrinsics or a wrapper calling intrin/asm. |
| 106 | "${AOM_ROOT}/test/filterintra_predictors_test.cc") |
| 107 | endif () |
| 108 | endif () |
| 109 | |
| 110 | set(AOM_UNIT_TEST_COMMON_NEON_INTRIN |
| 111 | ${AOM_UNIT_TEST_COMMON_NEON_INTRIN} |
| 112 | "${AOM_ROOT}/test/simd_cmp_neon.cc") |
| 113 | set(AOM_UNIT_TEST_COMMON_INTRIN_SSE2 |
| 114 | ${AOM_UNIT_TEST_COMMON_INTRIN_SSE2} |
| 115 | "${AOM_ROOT}/test/simd_cmp_sse2.cc") |
| 116 | set(AOM_UNIT_TEST_COMMON_INTRIN_SSSE3 |
| 117 | ${AOM_UNIT_TEST_COMMON_INTRIN_SSSE3} |
| 118 | "${AOM_ROOT}/test/simd_cmp_ssse3.cc") |
| 119 | set(AOM_UNIT_TEST_COMMON_INTRIN_SSE4_1 |
| 120 | ${AOM_UNIT_TEST_COMMON_INTRIN_SSE4_1} |
| 121 | "${AOM_ROOT}/test/simd_cmp_sse4.cc") |
| 122 | endif () |
| 123 | |
| 124 | if (CONFIG_AV1_ENCODER) |
| 125 | set(AOM_UNIT_TEST_ENCODER_SOURCES |
| 126 | ${AOM_UNIT_TEST_ENCODER_SOURCES} |
| 127 | "${AOM_ROOT}/test/active_map_test.cc" |
| 128 | "${AOM_ROOT}/test/arf_freq_test.cc" |
| 129 | "${AOM_ROOT}/test/av1_dct_test.cc" |
| 130 | "${AOM_ROOT}/test/av1_fht16x16_test.cc" |
| 131 | "${AOM_ROOT}/test/av1_fht8x8_test.cc" |
| 132 | "${AOM_ROOT}/test/av1_inv_txfm_test.cc" |
| 133 | "${AOM_ROOT}/test/avg_test.cc" |
| 134 | "${AOM_ROOT}/test/blend_a64_mask_1d_test.cc" |
| 135 | "${AOM_ROOT}/test/blend_a64_mask_test.cc" |
| 136 | "${AOM_ROOT}/test/borders_test.cc" |
| 137 | "${AOM_ROOT}/test/cpu_speed_test.cc" |
| 138 | "${AOM_ROOT}/test/end_to_end_test.cc" |
| 139 | "${AOM_ROOT}/test/error_block_test.cc" |
| 140 | "${AOM_ROOT}/test/fdct4x4_test.cc" |
| 141 | "${AOM_ROOT}/test/fdct8x8_test.cc" |
| 142 | "${AOM_ROOT}/test/frame_size_tests.cc" |
| 143 | "${AOM_ROOT}/test/hadamard_test.cc" |
| 144 | "${AOM_ROOT}/test/lossless_test.cc" |
| 145 | "${AOM_ROOT}/test/minmax_test.cc" |
| 146 | "${AOM_ROOT}/test/subtract_test.cc" |
| 147 | "${AOM_ROOT}/test/sum_squares_test.cc" |
| 148 | "${AOM_ROOT}/test/variance_test.cc") |
| 149 | |
| 150 | if (CONFIG_EXT_INTER) |
| 151 | set(AOM_UNIT_TEST_ENCODER_SOURCES |
| 152 | ${AOM_UNIT_TEST_ENCODER_SOURCES} |
| 153 | "${AOM_ROOT}/test/av1_wedge_utils_test.cc" |
| 154 | "${AOM_ROOT}/test/masked_sad_test.cc" |
| 155 | "${AOM_ROOT}/test/masked_variance_test.cc") |
| 156 | endif () |
| 157 | |
| 158 | if (CONFIG_EXT_TX) |
| 159 | set(AOM_UNIT_TEST_ENCODER_SOURCES |
| 160 | ${AOM_UNIT_TEST_ENCODER_SOURCES} |
| 161 | "${AOM_ROOT}/test/av1_fht16x32_test.cc" |
| 162 | "${AOM_ROOT}/test/av1_fht16x8_test.cc" |
| 163 | "${AOM_ROOT}/test/av1_fht32x16_test.cc" |
| 164 | "${AOM_ROOT}/test/av1_fht4x4_test.cc" |
| 165 | "${AOM_ROOT}/test/av1_fht4x8_test.cc" |
| 166 | "${AOM_ROOT}/test/av1_fht8x16_test.cc" |
| 167 | "${AOM_ROOT}/test/av1_fht8x4_test.cc" |
| 168 | "${AOM_ROOT}/test/fht32x32_test.cc") |
| 169 | endif () |
| 170 | |
| 171 | if (CONFIG_MOTION_VAR) |
| 172 | set(AOM_UNIT_TEST_ENCODER_SOURCES |
| 173 | ${AOM_UNIT_TEST_ENCODER_SOURCES} |
| 174 | "${AOM_ROOT}/test/obmc_sad_test.cc" |
| 175 | "${AOM_ROOT}/test/obmc_variance_test.cc") |
| 176 | endif () |
| 177 | endif () |
| 178 | |
| 179 | if (CONFIG_AV1_DECODER AND CONFIG_AV1_ENCODER) |
| 180 | set(AOM_UNIT_TEST_COMMON_SOURCES |
| 181 | ${AOM_UNIT_TEST_COMMON_SOURCES} |
| 182 | "${AOM_ROOT}/test/divu_small_test.cc" |
| 183 | "${AOM_ROOT}/test/ethread_test.cc" |
| 184 | "${AOM_ROOT}/test/idct8x8_test.cc" |
| 185 | "${AOM_ROOT}/test/partial_idct_test.cc" |
| 186 | "${AOM_ROOT}/test/superframe_test.cc" |
| 187 | "${AOM_ROOT}/test/tile_independence_test.cc") |
| 188 | |
| 189 | if (CONFIG_ANS) |
| 190 | set(AOM_UNIT_TEST_COMMON_SOURCES |
| 191 | ${AOM_UNIT_TEST_COMMON_SOURCES} |
| 192 | "${AOM_ROOT}/test/ans_codec_test.cc" |
| 193 | "${AOM_ROOT}/test/ans_test.cc") |
| 194 | else () |
| 195 | set(AOM_UNIT_TEST_COMMON_SOURCES |
| 196 | ${AOM_UNIT_TEST_COMMON_SOURCES} |
| 197 | "${AOM_ROOT}/test/boolcoder_test.cc") |
| 198 | endif () |
| 199 | |
| 200 | if (CONFIG_EXT_TILE) |
| 201 | set(AOM_UNIT_TEST_COMMON_SOURCES |
| 202 | ${AOM_UNIT_TEST_COMMON_SOURCES} |
| 203 | "${AOM_ROOT}/test/av1_ext_tile_test.cc") |
| 204 | endif () |
| 205 | endif () |
| 206 | |
| 207 | if (CONFIG_AOM_HIGHBITDEPTH) |
| 208 | if (CONFIG_AV1) |
| 209 | set(AOM_UNIT_TEST_COMMON_INTRIN_SSE4_1 |
| 210 | ${AOM_UNIT_TEST_COMMON_INTRIN_SSE4_1} |
| 211 | "${AOM_ROOT}/test/av1_highbd_iht_test.cc" |
| 212 | "${AOM_ROOT}/test/av1_quantize_test.cc") |
| 213 | endif () |
| 214 | |
| 215 | if (CONFIG_INTERNAL_STATS) |
| 216 | set(AOM_UNIT_TEST_COMMON_SOURCES |
| 217 | ${AOM_UNIT_TEST_COMMON_SOURCES} |
| 218 | "${AOM_ROOT}/test/hbd_metrics_test.cc") |
| 219 | endif () |
| 220 | endif () |
| 221 | |
| 222 | if (CONFIG_UNIT_TESTS) |
| 223 | if (MSVC) |
| 224 | # Force static run time to avoid collisions with googletest. |
| 225 | include("${AOM_ROOT}/build/cmake/msvc_runtime.cmake") |
| 226 | endif () |
| 227 | include_directories( |
| 228 | "${AOM_ROOT}/third_party/googletest/src/googletest/src" |
| 229 | "${AOM_ROOT}/third_party/googletest/src/googletest/include") |
| 230 | add_subdirectory("${AOM_ROOT}/third_party/googletest/src/googletest") |
| 231 | |
| 232 | # Generate a stub file containing the C function usage_exit(); this is |
| 233 | # required because of the test dependency on aom_common_app_util. |
| 234 | # Specifically, the function die() in tools_common.c calls usage_exit() to |
| 235 | # terminate the program on the caller's behalf. |
| 236 | file(WRITE "${AOM_CONFIG_DIR}/usage_exit.c" "void usage_exit(void) {}") |
| 237 | endif () |
| 238 | |
| 239 | # Setup the targets for CONFIG_UNIT_TESTS. The libaom and app util targets must |
| 240 | # exist before this function is called. |
| 241 | function (setup_aom_test_targets) |
| 242 | add_library(test_aom_common OBJECT ${AOM_UNIT_TEST_COMMON_SOURCES}) |
| 243 | add_library(test_aom_decoder OBJECT ${AOM_UNIT_TEST_DECODER_SOURCES}) |
| 244 | add_library(test_aom_encoder OBJECT ${AOM_UNIT_TEST_ENCODER_SOURCES}) |
| 245 | |
| 246 | set(AOM_LIB_TARGETS ${AOM_LIB_TARGETS} test_aom_common test_aom_decoder |
| 247 | test_aom_encoder PARENT_SCOPE) |
| 248 | |
| 249 | add_executable(test_libaom ${AOM_UNIT_TEST_WRAPPER_SOURCES} |
| 250 | $<TARGET_OBJECTS:aom_common_app_util> |
| 251 | $<TARGET_OBJECTS:test_aom_common>) |
| 252 | |
| 253 | if (CONFIG_DECODERS) |
| 254 | target_sources(test_libaom PUBLIC |
| 255 | $<TARGET_OBJECTS:aom_decoder_app_util> |
| 256 | $<TARGET_OBJECTS:test_aom_decoder>) |
| 257 | |
| 258 | if (CONFIG_DECODE_PERF_TESTS AND CONFIG_WEBM_IO) |
| 259 | target_sources(test_libaom PUBLIC ${AOM_DECODE_PERF_TEST_SOURCES}) |
| 260 | endif () |
| 261 | endif () |
| 262 | |
| 263 | if (CONFIG_ENCODERS) |
| 264 | target_sources(test_libaom PUBLIC |
| 265 | $<TARGET_OBJECTS:test_aom_encoder> |
| 266 | $<TARGET_OBJECTS:aom_encoder_app_util>) |
| 267 | |
| 268 | if (CONFIG_ENCODE_PERF_TESTS) |
| 269 | target_sources(test_libaom PUBLIC ${AOM_ENCODE_PERF_TEST_SOURCES}) |
| 270 | endif () |
| 271 | endif () |
| 272 | |
| 273 | target_link_libraries(test_libaom PUBLIC aom gtest) |
| 274 | |
| 275 | add_executable(test_intra_pred_speed |
| 276 | ${AOM_TEST_INTRA_PRED_SPEED_SOURCES} |
| 277 | $<TARGET_OBJECTS:aom_common_app_util>) |
| 278 | target_link_libraries(test_intra_pred_speed PUBLIC aom gtest) |
| 279 | |
| 280 | if (CONFIG_LIBYUV) |
| 281 | target_sources(test_libaom PUBLIC $<TARGET_OBJECTS:yuv>) |
| 282 | endif () |
| 283 | if (CONFIG_WEBM_IO) |
| 284 | target_sources(test_libaom PUBLIC ${AOM_UNIT_TEST_WEBM_SOURCES} |
| 285 | $<TARGET_OBJECTS:webm>) |
| 286 | endif () |
| 287 | if (HAVE_SSE2) |
| 288 | add_intrinsics_source_to_target("-msse2" "test_libaom" |
| 289 | "AOM_UNIT_TEST_COMMON_INTRIN_SSE2") |
| 290 | endif () |
| 291 | if (HAVE_SSSE3) |
| 292 | add_intrinsics_source_to_target("-mssse3" "test_libaom" |
| 293 | "AOM_UNIT_TEST_COMMON_INTRIN_SSSE3") |
| 294 | endif () |
| 295 | if (HAVE_SSE4_1) |
| 296 | add_intrinsics_source_to_target("-msse4.1" "test_libaom" |
| 297 | "AOM_UNIT_TEST_COMMON_INTRIN_SSE4_1") |
| 298 | endif () |
Tom Finegan | 4f7e104 | 2017-03-01 10:25:16 -0800 | [diff] [blame^] | 299 | |
| 300 | add_custom_target(testdata |
| 301 | COMMAND ${CMAKE_COMMAND} |
| 302 | -DAOM_CONFIG_DIR="${AOM_CONFIG_DIR}" |
| 303 | -DAOM_ROOT="${AOM_ROOT}" |
| 304 | -P "${AOM_ROOT}/test/test_worker.cmake" |
| 305 | SOURCES ${AOM_TEST_DATA_LIST}) |
Tom Finegan | 4db04d3 | 2017-02-23 14:37:27 -0800 | [diff] [blame] | 306 | endfunction () |