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