Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [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 the |
| 5 | # Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License was |
| 6 | # not distributed with this source code in the LICENSE file, you can obtain it |
| 7 | # at www.aomedia.org/license/software. If the Alliance for Open Media Patent |
| 8 | # License 1.0 was not distributed with this source code in the PATENTS file, you |
| 9 | # can obtain it at www.aomedia.org/license/patent. |
| 10 | # |
| 11 | if(AOM_TEST_TEST_CMAKE_) |
Johann | 29a5973 | 2018-04-27 10:51:00 -0700 | [diff] [blame] | 12 | return() |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 13 | endif() # AOM_TEST_TEST_CMAKE_ |
Tom Finegan | 17ccaec | 2017-05-25 17:47:42 -0700 | [diff] [blame] | 14 | set(AOM_TEST_TEST_CMAKE_ 1) |
| 15 | |
Tom Finegan | ff766cd | 2017-06-20 14:18:03 -0700 | [diff] [blame] | 16 | include(FindPythonInterp) |
Tom Finegan | e9d70c9 | 2017-05-10 11:31:05 -0700 | [diff] [blame] | 17 | include(ProcessorCount) |
| 18 | |
Tom Finegan | 4f7e104 | 2017-03-01 10:25:16 -0800 | [diff] [blame] | 19 | include("${AOM_ROOT}/test/test_data_util.cmake") |
| 20 | |
Tom Finegan | e9d70c9 | 2017-05-10 11:31:05 -0700 | [diff] [blame] | 21 | set(AOM_UNIT_TEST_DATA_LIST_FILE "${AOM_ROOT}/test/test-data.sha1") |
| 22 | |
Tom Finegan | de6adff | 2018-08-01 14:22:14 -0700 | [diff] [blame] | 23 | list(APPEND AOM_UNIT_TEST_WRAPPER_SOURCES "${AOM_GEN_SRC_DIR}/usage_exit.c" |
Tom Finegan | ed93cc8 | 2018-06-13 16:32:49 -0700 | [diff] [blame] | 24 | "${AOM_ROOT}/test/test_libaom.cc") |
Tom Finegan | 4db04d3 | 2017-02-23 14:37:27 -0800 | [diff] [blame] | 25 | |
Tom Finegan | ed93cc8 | 2018-06-13 16:32:49 -0700 | [diff] [blame] | 26 | list(APPEND AOM_UNIT_TEST_COMMON_SOURCES |
| 27 | "${AOM_ROOT}/test/acm_random.h" |
| 28 | "${AOM_ROOT}/test/aom_integer_test.cc" |
Tom Finegan | 1d773ac | 2018-08-21 19:23:04 -0700 | [diff] [blame] | 29 | "${AOM_ROOT}/test/av1_config_test.cc" |
Wan-Teh Chang | 3a53922 | 2018-08-03 12:33:28 -0700 | [diff] [blame] | 30 | "${AOM_ROOT}/test/blockd_test.cc" |
Tom Finegan | ed93cc8 | 2018-06-13 16:32:49 -0700 | [diff] [blame] | 31 | "${AOM_ROOT}/test/clear_system_state.h" |
| 32 | "${AOM_ROOT}/test/codec_factory.h" |
| 33 | "${AOM_ROOT}/test/decode_test_driver.cc" |
| 34 | "${AOM_ROOT}/test/decode_test_driver.h" |
| 35 | "${AOM_ROOT}/test/function_equivalence_test.h" |
Wan-Teh Chang | 64af22d | 2018-07-31 17:00:55 -0700 | [diff] [blame] | 36 | "${AOM_ROOT}/test/log2_test.cc" |
Tom Finegan | ed93cc8 | 2018-06-13 16:32:49 -0700 | [diff] [blame] | 37 | "${AOM_ROOT}/test/md5_helper.h" |
| 38 | "${AOM_ROOT}/test/register_state_check.h" |
| 39 | "${AOM_ROOT}/test/test_vectors.cc" |
| 40 | "${AOM_ROOT}/test/test_vectors.h" |
| 41 | "${AOM_ROOT}/test/transform_test_base.h" |
| 42 | "${AOM_ROOT}/test/util.h" |
| 43 | "${AOM_ROOT}/test/video_source.h") |
Tom Finegan | 4db04d3 | 2017-02-23 14:37:27 -0800 | [diff] [blame] | 44 | |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 45 | if(CONFIG_INTERNAL_STATS) |
Tom Finegan | ed93cc8 | 2018-06-13 16:32:49 -0700 | [diff] [blame] | 46 | list(APPEND AOM_UNIT_TEST_COMMON_SOURCES |
| 47 | "${AOM_ROOT}/test/hbd_metrics_test.cc") |
| 48 | endif() |
| 49 | |
| 50 | list(APPEND AOM_UNIT_TEST_DECODER_SOURCES "${AOM_ROOT}/test/decode_api_test.cc" |
Tom Finegan | b45f5d1 | 2018-08-16 14:25:42 -0700 | [diff] [blame] | 51 | "${AOM_ROOT}/test/external_frame_buffer_test.cc" |
Tom Finegan | ed93cc8 | 2018-06-13 16:32:49 -0700 | [diff] [blame] | 52 | "${AOM_ROOT}/test/invalid_file_test.cc" |
| 53 | "${AOM_ROOT}/test/test_vector_test.cc" |
| 54 | "${AOM_ROOT}/test/ivf_video_source.h") |
| 55 | |
| 56 | list(APPEND AOM_UNIT_TEST_ENCODER_SOURCES |
| 57 | "${AOM_ROOT}/test/active_map_test.cc" |
| 58 | "${AOM_ROOT}/test/altref_test.cc" |
| 59 | "${AOM_ROOT}/test/aq_segment_test.cc" |
Tom Finegan | ed93cc8 | 2018-06-13 16:32:49 -0700 | [diff] [blame] | 60 | "${AOM_ROOT}/test/borders_test.cc" |
| 61 | "${AOM_ROOT}/test/cpu_speed_test.cc" |
| 62 | "${AOM_ROOT}/test/datarate_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/end_to_end_test.cc" |
| 67 | "${AOM_ROOT}/test/error_resilience_test.cc" |
| 68 | "${AOM_ROOT}/test/frame_size_tests.cc" |
| 69 | "${AOM_ROOT}/test/horz_superres_test.cc" |
| 70 | "${AOM_ROOT}/test/i420_video_source.h" |
| 71 | "${AOM_ROOT}/test/lossless_test.cc" |
| 72 | "${AOM_ROOT}/test/monochrome_test.cc" |
| 73 | "${AOM_ROOT}/test/qm_test.cc" |
| 74 | "${AOM_ROOT}/test/resize_test.cc" |
| 75 | "${AOM_ROOT}/test/scalability_test.cc" |
| 76 | "${AOM_ROOT}/test/y4m_test.cc" |
| 77 | "${AOM_ROOT}/test/y4m_video_source.h" |
| 78 | "${AOM_ROOT}/test/yuv_video_source.h") |
| 79 | |
| 80 | list(APPEND AOM_DECODE_PERF_TEST_SOURCES "${AOM_ROOT}/test/decode_perf_test.cc") |
| 81 | list(APPEND AOM_ENCODE_PERF_TEST_SOURCES "${AOM_ROOT}/test/encode_perf_test.cc") |
| 82 | list(APPEND AOM_UNIT_TEST_WEBM_SOURCES "${AOM_ROOT}/test/webm_video_source.h") |
Tom Finegan | de6adff | 2018-08-01 14:22:14 -0700 | [diff] [blame] | 83 | list(APPEND AOM_TEST_INTRA_PRED_SPEED_SOURCES "${AOM_GEN_SRC_DIR}/usage_exit.c" |
Tom Finegan | ed93cc8 | 2018-06-13 16:32:49 -0700 | [diff] [blame] | 84 | "${AOM_ROOT}/test/test_intra_pred_speed.cc") |
| 85 | |
| 86 | if(NOT BUILD_SHARED_LIBS) |
| 87 | list(APPEND AOM_UNIT_TEST_COMMON_SOURCES |
| 88 | "${AOM_ROOT}/test/cdef_test.cc" |
| 89 | "${AOM_ROOT}/test/cfl_test.cc" |
| 90 | "${AOM_ROOT}/test/convolve_test.cc" |
| 91 | "${AOM_ROOT}/test/hiprec_convolve_test.cc" |
| 92 | "${AOM_ROOT}/test/hiprec_convolve_test_util.cc" |
| 93 | "${AOM_ROOT}/test/hiprec_convolve_test_util.h" |
| 94 | "${AOM_ROOT}/test/intrabc_test.cc" |
| 95 | "${AOM_ROOT}/test/intrapred_test.cc" |
| 96 | "${AOM_ROOT}/test/lpf_test.cc" |
| 97 | "${AOM_ROOT}/test/onyxc_int_test.cc" |
| 98 | "${AOM_ROOT}/test/scan_test.cc" |
| 99 | "${AOM_ROOT}/test/selfguided_filter_test.cc" |
| 100 | "${AOM_ROOT}/test/simd_cmp_impl.h" |
| 101 | "${AOM_ROOT}/test/simd_impl.h") |
| 102 | |
| 103 | if(CONFIG_ACCOUNTING) |
| 104 | list(APPEND AOM_UNIT_TEST_COMMON_SOURCES |
| 105 | "${AOM_ROOT}/test/accounting_test.cc") |
| 106 | endif() |
| 107 | |
| 108 | if(CONFIG_AV1_DECODER AND CONFIG_AV1_ENCODER) |
| 109 | list(APPEND AOM_UNIT_TEST_COMMON_SOURCES |
Yaowu Xu | 5ce638f | 2018-08-21 10:39:05 -0700 | [diff] [blame] | 110 | "${AOM_ROOT}/test/av1_encoder_parms_get_to_decoder.cc" |
Tom Finegan | ed93cc8 | 2018-06-13 16:32:49 -0700 | [diff] [blame] | 111 | "${AOM_ROOT}/test/av1_ext_tile_test.cc" |
| 112 | "${AOM_ROOT}/test/binary_codes_test.cc" |
| 113 | "${AOM_ROOT}/test/boolcoder_test.cc" |
| 114 | "${AOM_ROOT}/test/coding_path_sync.cc" |
| 115 | "${AOM_ROOT}/test/decode_multithreaded_test.cc" |
| 116 | "${AOM_ROOT}/test/divu_small_test.cc" |
Scott LaVarnway | 59f7066 | 2018-06-04 14:58:48 -0700 | [diff] [blame] | 117 | "${AOM_ROOT}/test/dr_prediction_test.cc" |
Tom Finegan | ed93cc8 | 2018-06-13 16:32:49 -0700 | [diff] [blame] | 118 | "${AOM_ROOT}/test/ec_test.cc" |
| 119 | "${AOM_ROOT}/test/ethread_test.cc" |
| 120 | "${AOM_ROOT}/test/film_grain_table_test.cc" |
| 121 | "${AOM_ROOT}/test/segment_binarization_sync.cc" |
| 122 | "${AOM_ROOT}/test/superframe_test.cc" |
| 123 | "${AOM_ROOT}/test/tile_independence_test.cc") |
| 124 | endif() |
| 125 | |
| 126 | list(APPEND AOM_UNIT_TEST_COMMON_INTRIN_NEON |
| 127 | "${AOM_ROOT}/test/simd_cmp_neon.cc") |
| 128 | if(HAVE_NEON) |
| 129 | list(APPEND AOM_UNIT_TEST_COMMON_SOURCES |
| 130 | "${AOM_ROOT}/test/simd_neon_test.cc") |
| 131 | endif() |
| 132 | |
| 133 | list(APPEND AOM_UNIT_TEST_COMMON_INTRIN_SSE2 |
| 134 | "${AOM_ROOT}/test/simd_cmp_sse2.cc") |
| 135 | if(HAVE_SSE2) |
| 136 | list(APPEND AOM_UNIT_TEST_COMMON_SOURCES |
| 137 | "${AOM_ROOT}/test/simd_sse2_test.cc") |
| 138 | endif() |
| 139 | |
| 140 | list(APPEND AOM_UNIT_TEST_COMMON_INTRIN_SSSE3 |
| 141 | "${AOM_ROOT}/test/simd_cmp_ssse3.cc") |
| 142 | if(HAVE_SSSE3) |
| 143 | list(APPEND AOM_UNIT_TEST_COMMON_SOURCES |
| 144 | "${AOM_ROOT}/test/simd_ssse3_test.cc") |
| 145 | endif() |
| 146 | |
| 147 | if(HAVE_SSE4) |
| 148 | list(APPEND AOM_UNIT_TEST_COMMON_SOURCES |
| 149 | "${AOM_ROOT}/test/simd_sse4_test.cc") |
| 150 | endif() |
| 151 | |
| 152 | if(HAVE_SSE4_1) |
| 153 | list(APPEND AOM_UNIT_TEST_COMMON_SOURCES |
| 154 | "${AOM_ROOT}/test/filterintra_test.cc") |
| 155 | endif() |
| 156 | |
| 157 | list(APPEND AOM_UNIT_TEST_COMMON_INTRIN_AVX2 |
| 158 | "${AOM_ROOT}/test/simd_cmp_avx2.cc") |
| 159 | if(HAVE_AVX2) |
| 160 | list(APPEND AOM_UNIT_TEST_COMMON_SOURCES |
| 161 | "${AOM_ROOT}/test/simd_avx2_test.cc") |
| 162 | endif() |
| 163 | |
| 164 | list(APPEND AOM_UNIT_TEST_ENCODER_SOURCES |
| 165 | "${AOM_ROOT}/test/arf_freq_test.cc" |
| 166 | "${AOM_ROOT}/test/av1_convolve_2d_test.cc" |
| 167 | "${AOM_ROOT}/test/av1_convolve_2d_test_util.cc" |
| 168 | "${AOM_ROOT}/test/av1_convolve_2d_test_util.h" |
| 169 | "${AOM_ROOT}/test/av1_fwd_txfm1d_test.cc" |
| 170 | "${AOM_ROOT}/test/av1_fwd_txfm2d_test.cc" |
| 171 | "${AOM_ROOT}/test/av1_inv_txfm1d_test.cc" |
| 172 | "${AOM_ROOT}/test/av1_inv_txfm2d_test.cc" |
David Turner | 486cc98 | 2018-11-09 15:48:58 +0000 | [diff] [blame] | 173 | "${AOM_ROOT}/test/av1_nn_predict_test.cc" |
Tom Finegan | ed93cc8 | 2018-06-13 16:32:49 -0700 | [diff] [blame] | 174 | "${AOM_ROOT}/test/av1_round_shift_array_test.cc" |
Tom Finegan | 3500d0e | 2018-08-06 13:13:20 -0700 | [diff] [blame] | 175 | "${AOM_ROOT}/test/av1_txfm_test.cc" |
| 176 | "${AOM_ROOT}/test/av1_txfm_test.h" |
Tom Finegan | ed93cc8 | 2018-06-13 16:32:49 -0700 | [diff] [blame] | 177 | "${AOM_ROOT}/test/av1_wedge_utils_test.cc" |
| 178 | "${AOM_ROOT}/test/blend_a64_mask_1d_test.cc" |
| 179 | "${AOM_ROOT}/test/blend_a64_mask_test.cc" |
| 180 | "${AOM_ROOT}/test/comp_avg_pred_test.cc" |
| 181 | "${AOM_ROOT}/test/comp_avg_pred_test.h" |
| 182 | "${AOM_ROOT}/test/comp_mask_variance_test.cc" |
elliottk | 35be78d | 2018-10-17 16:07:12 -0700 | [diff] [blame] | 183 | "${AOM_ROOT}/test/edge_detect_test.cc" |
Tom Finegan | ed93cc8 | 2018-06-13 16:32:49 -0700 | [diff] [blame] | 184 | "${AOM_ROOT}/test/encodetxb_test.cc" |
| 185 | "${AOM_ROOT}/test/error_block_test.cc" |
| 186 | "${AOM_ROOT}/test/fft_test.cc" |
| 187 | "${AOM_ROOT}/test/fwht4x4_test.cc" |
David Turner | 1c573e0 | 2018-10-19 11:49:53 +0100 | [diff] [blame] | 188 | "${AOM_ROOT}/test/horver_correlation_test.cc" |
Tom Finegan | ed93cc8 | 2018-06-13 16:32:49 -0700 | [diff] [blame] | 189 | "${AOM_ROOT}/test/masked_sad_test.cc" |
| 190 | "${AOM_ROOT}/test/masked_variance_test.cc" |
| 191 | "${AOM_ROOT}/test/motion_vector_test.cc" |
| 192 | "${AOM_ROOT}/test/noise_model_test.cc" |
| 193 | "${AOM_ROOT}/test/obmc_sad_test.cc" |
| 194 | "${AOM_ROOT}/test/obmc_variance_test.cc" |
Tom Finegan | 83374c8 | 2018-08-01 12:03:41 -0700 | [diff] [blame] | 195 | "${AOM_ROOT}/test/pickrst_test.cc" |
Tom Finegan | ed93cc8 | 2018-06-13 16:32:49 -0700 | [diff] [blame] | 196 | "${AOM_ROOT}/test/sad_test.cc" |
| 197 | "${AOM_ROOT}/test/subtract_test.cc" |
Sachin Kumar Garg | d78396e | 2018-06-21 11:46:30 +0530 | [diff] [blame] | 198 | "${AOM_ROOT}/test/reconinter_test.cc" |
Tom Finegan | ed93cc8 | 2018-06-13 16:32:49 -0700 | [diff] [blame] | 199 | "${AOM_ROOT}/test/sum_squares_test.cc" |
Tom Finegan | 83374c8 | 2018-08-01 12:03:41 -0700 | [diff] [blame] | 200 | "${AOM_ROOT}/test/variance_test.cc" |
Remya | 2c893e6 | 2018-08-08 17:54:06 +0530 | [diff] [blame] | 201 | "${AOM_ROOT}/test/wiener_test.cc" |
| 202 | "${AOM_ROOT}/test/warp_filter_test.cc" |
| 203 | "${AOM_ROOT}/test/warp_filter_test_util.cc" |
| 204 | "${AOM_ROOT}/test/warp_filter_test_util.h") |
Tom Finegan | ed93cc8 | 2018-06-13 16:32:49 -0700 | [diff] [blame] | 205 | |
| 206 | list(APPEND AOM_UNIT_TEST_ENCODER_INTRIN_SSE4_1 |
| 207 | "${AOM_ROOT}/test/av1_highbd_iht_test.cc" |
| 208 | "${AOM_ROOT}/test/av1_quantize_test.cc" |
| 209 | "${AOM_ROOT}/test/corner_match_test.cc" |
| 210 | "${AOM_ROOT}/test/quantize_func_test.cc" |
Tom Finegan | ed93cc8 | 2018-06-13 16:32:49 -0700 | [diff] [blame] | 211 | "${AOM_ROOT}/test/simd_cmp_sse4.cc") |
| 212 | |
| 213 | if(HAVE_SSE4_1) |
| 214 | list(APPEND AOM_UNIT_TEST_ENCODER_SOURCES |
| 215 | "${AOM_ROOT}/test/av1_convolve_scale_test.cc" |
| 216 | "${AOM_ROOT}/test/av1_horz_only_frame_superres_test.cc" |
Remya | 2c893e6 | 2018-08-08 17:54:06 +0530 | [diff] [blame] | 217 | "${AOM_ROOT}/test/intra_edge_test.cc") |
| 218 | |
Tom Finegan | ed93cc8 | 2018-06-13 16:32:49 -0700 | [diff] [blame] | 219 | endif() |
| 220 | |
| 221 | if(HAVE_SSE4_2) |
| 222 | list(APPEND AOM_UNIT_TEST_ENCODER_SOURCES "${AOM_ROOT}/test/hash_test.cc") |
| 223 | endif() |
| 224 | |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 225 | endif() |
Tom Finegan | 4db04d3 | 2017-02-23 14:37:27 -0800 | [diff] [blame] | 226 | |
Tom Finegan | d9647f2 | 2018-06-19 13:27:57 -0700 | [diff] [blame] | 227 | if(ENABLE_TESTS) |
Tom Finegan | ff766cd | 2017-06-20 14:18:03 -0700 | [diff] [blame] | 228 | find_package(PythonInterp) |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 229 | if(NOT PYTHONINTERP_FOUND) |
Tom Finegan | d9647f2 | 2018-06-19 13:27:57 -0700 | [diff] [blame] | 230 | message(FATAL_ERROR |
| 231 | "--- Unit tests require Python, rerun cmake with " |
| 232 | "-DENABLE_TESTS=0 to avoid this error, or install Python and " |
| 233 | "make sure it's in your PATH.") |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 234 | endif() |
Tom Finegan | ff766cd | 2017-06-20 14:18:03 -0700 | [diff] [blame] | 235 | |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 236 | if(MSVC) # Force static run time to avoid collisions with googletest. |
Tom Finegan | 4db04d3 | 2017-02-23 14:37:27 -0800 | [diff] [blame] | 237 | include("${AOM_ROOT}/build/cmake/msvc_runtime.cmake") |
Ilie Halip | 0e41f76 | 2018-07-16 21:01:43 +0300 | [diff] [blame] | 238 | if(BUILD_SHARED_LIBS) |
| 239 | set(AOM_DISABLE_GTEST_CMAKE 1) |
| 240 | endif() |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 241 | endif() |
Tom Finegan | 84f2d79 | 2017-06-15 23:06:44 -0700 | [diff] [blame] | 242 | |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 243 | if(BUILD_SHARED_LIBS AND APPLE) # Silence an RPATH warning. |
Tom Finegan | 84f2d79 | 2017-06-15 23:06:44 -0700 | [diff] [blame] | 244 | set(CMAKE_MACOSX_RPATH 1) |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 245 | endif() |
Tom Finegan | 2f61fc8 | 2017-09-20 09:12:58 -0700 | [diff] [blame] | 246 | |
| 247 | include_directories( |
Tom Finegan | 2f61fc8 | 2017-09-20 09:12:58 -0700 | [diff] [blame] | 248 | "${AOM_ROOT}/third_party/googletest/src/googletest/include") |
| 249 | |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 250 | if(AOM_DISABLE_GTEST_CMAKE) |
Tom Finegan | 2f61fc8 | 2017-09-20 09:12:58 -0700 | [diff] [blame] | 251 | include_directories("${AOM_ROOT}/third_party/googletest/src/googletest") |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 252 | add_library( |
| 253 | gtest |
| 254 | STATIC |
Tom Finegan | 2f61fc8 | 2017-09-20 09:12:58 -0700 | [diff] [blame] | 255 | "${AOM_ROOT}/third_party/googletest/src/googletest/src/gtest-all.cc") |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 256 | else() |
Tom Finegan | 2f61fc8 | 2017-09-20 09:12:58 -0700 | [diff] [blame] | 257 | add_subdirectory("${AOM_ROOT}/third_party/googletest/src/googletest" |
| 258 | EXCLUDE_FROM_ALL) |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 259 | endif() |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 260 | endif() |
Tom Finegan | 4db04d3 | 2017-02-23 14:37:27 -0800 | [diff] [blame] | 261 | |
Tom Finegan | d9647f2 | 2018-06-19 13:27:57 -0700 | [diff] [blame] | 262 | # Setup testdata download targets, test build targets, and test run targets. The |
| 263 | # libaom and app util targets must exist before this function is called. |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 264 | function(setup_aom_test_targets) |
Tom Finegan | ed93cc8 | 2018-06-13 16:32:49 -0700 | [diff] [blame] | 265 | |
| 266 | # TODO(tomfinegan): Build speed optimization. $AOM_UNIT_TEST_COMMON_SOURCES |
| 267 | # and $AOM_UNIT_TEST_ENCODER_SOURCES are very large. The build of test targets |
| 268 | # could be sped up (on multicore build machines) by compiling sources in each |
| 269 | # list into separate object library targets, and then linking them into |
| 270 | # test_libaom. |
Tom Finegan | 4db04d3 | 2017-02-23 14:37:27 -0800 | [diff] [blame] | 271 | add_library(test_aom_common OBJECT ${AOM_UNIT_TEST_COMMON_SOURCES}) |
Tom Finegan | d2a74d6 | 2017-06-21 11:46:51 -0700 | [diff] [blame] | 272 | add_dependencies(test_aom_common aom) |
Tom Finegan | ba02c24 | 2017-05-16 15:01:54 -0700 | [diff] [blame] | 273 | |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 274 | if(CONFIG_AV1_DECODER) |
Tom Finegan | ba02c24 | 2017-05-16 15:01:54 -0700 | [diff] [blame] | 275 | add_library(test_aom_decoder OBJECT ${AOM_UNIT_TEST_DECODER_SOURCES}) |
Tom Finegan | d2a74d6 | 2017-06-21 11:46:51 -0700 | [diff] [blame] | 276 | add_dependencies(test_aom_decoder aom) |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 277 | endif() |
Tom Finegan | ba02c24 | 2017-05-16 15:01:54 -0700 | [diff] [blame] | 278 | |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 279 | if(CONFIG_AV1_ENCODER) |
Tom Finegan | ba02c24 | 2017-05-16 15:01:54 -0700 | [diff] [blame] | 280 | add_library(test_aom_encoder OBJECT ${AOM_UNIT_TEST_ENCODER_SOURCES}) |
Tom Finegan | d2a74d6 | 2017-06-21 11:46:51 -0700 | [diff] [blame] | 281 | add_dependencies(test_aom_encoder aom) |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 282 | endif() |
Tom Finegan | 4db04d3 | 2017-02-23 14:37:27 -0800 | [diff] [blame] | 283 | |
Tom Finegan | 4db04d3 | 2017-02-23 14:37:27 -0800 | [diff] [blame] | 284 | add_executable(test_libaom ${AOM_UNIT_TEST_WRAPPER_SOURCES} |
| 285 | $<TARGET_OBJECTS:aom_common_app_util> |
| 286 | $<TARGET_OBJECTS:test_aom_common>) |
Tom Finegan | ed93cc8 | 2018-06-13 16:32:49 -0700 | [diff] [blame] | 287 | list(APPEND AOM_APP_TARGETS test_libaom) |
Tom Finegan | 4db04d3 | 2017-02-23 14:37:27 -0800 | [diff] [blame] | 288 | |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 289 | if(CONFIG_AV1_DECODER) |
| 290 | target_sources(test_libaom PRIVATE $<TARGET_OBJECTS:aom_decoder_app_util> |
Tom Finegan | 4db04d3 | 2017-02-23 14:37:27 -0800 | [diff] [blame] | 291 | $<TARGET_OBJECTS:test_aom_decoder>) |
| 292 | |
Tom Finegan | d9647f2 | 2018-06-19 13:27:57 -0700 | [diff] [blame] | 293 | if(ENABLE_DECODE_PERF_TESTS AND CONFIG_WEBM_IO) |
Tom Finegan | 84f2d79 | 2017-06-15 23:06:44 -0700 | [diff] [blame] | 294 | target_sources(test_libaom PRIVATE ${AOM_DECODE_PERF_TEST_SOURCES}) |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 295 | endif() |
| 296 | endif() |
Tom Finegan | 4db04d3 | 2017-02-23 14:37:27 -0800 | [diff] [blame] | 297 | |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 298 | if(CONFIG_AV1_ENCODER) |
| 299 | target_sources(test_libaom PRIVATE $<TARGET_OBJECTS:test_aom_encoder> |
Tom Finegan | 4db04d3 | 2017-02-23 14:37:27 -0800 | [diff] [blame] | 300 | $<TARGET_OBJECTS:aom_encoder_app_util>) |
| 301 | |
Tom Finegan | d9647f2 | 2018-06-19 13:27:57 -0700 | [diff] [blame] | 302 | if(ENABLE_ENCODE_PERF_TESTS) |
Tom Finegan | 84f2d79 | 2017-06-15 23:06:44 -0700 | [diff] [blame] | 303 | target_sources(test_libaom PRIVATE ${AOM_ENCODE_PERF_TEST_SOURCES}) |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 304 | endif() |
Tom Finegan | ba02c24 | 2017-05-16 15:01:54 -0700 | [diff] [blame] | 305 | |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 306 | if(NOT BUILD_SHARED_LIBS) |
| 307 | add_executable(test_intra_pred_speed ${AOM_TEST_INTRA_PRED_SPEED_SOURCES} |
Tom Finegan | 871d2ca | 2017-06-15 16:46:57 -0700 | [diff] [blame] | 308 | $<TARGET_OBJECTS:aom_common_app_util>) |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 309 | target_link_libraries(test_intra_pred_speed ${AOM_LIB_LINK_TYPE} aom |
| 310 | gtest) |
Tom Finegan | ed93cc8 | 2018-06-13 16:32:49 -0700 | [diff] [blame] | 311 | list(APPEND AOM_APP_TARGETS test_intra_pred_speed) |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 312 | endif() |
| 313 | endif() |
Tom Finegan | 4db04d3 | 2017-02-23 14:37:27 -0800 | [diff] [blame] | 314 | |
Tom Finegan | d46b4d3 | 2017-05-09 09:14:03 -0700 | [diff] [blame] | 315 | target_link_libraries(test_libaom ${AOM_LIB_LINK_TYPE} aom gtest) |
Tom Finegan | 4db04d3 | 2017-02-23 14:37:27 -0800 | [diff] [blame] | 316 | |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 317 | if(CONFIG_LIBYUV) |
Tom Finegan | 84f2d79 | 2017-06-15 23:06:44 -0700 | [diff] [blame] | 318 | target_sources(test_libaom PRIVATE $<TARGET_OBJECTS:yuv>) |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 319 | endif() |
| 320 | if(CONFIG_WEBM_IO) |
Tom Finegan | 84f2d79 | 2017-06-15 23:06:44 -0700 | [diff] [blame] | 321 | target_sources(test_libaom PRIVATE $<TARGET_OBJECTS:webm>) |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 322 | endif() |
| 323 | if(HAVE_SSE2) |
Tom Finegan | 4db04d3 | 2017-02-23 14:37:27 -0800 | [diff] [blame] | 324 | add_intrinsics_source_to_target("-msse2" "test_libaom" |
| 325 | "AOM_UNIT_TEST_COMMON_INTRIN_SSE2") |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 326 | endif() |
| 327 | if(HAVE_SSSE3) |
Tom Finegan | 4db04d3 | 2017-02-23 14:37:27 -0800 | [diff] [blame] | 328 | add_intrinsics_source_to_target("-mssse3" "test_libaom" |
| 329 | "AOM_UNIT_TEST_COMMON_INTRIN_SSSE3") |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 330 | endif() |
| 331 | if(HAVE_SSE4_1) |
Tom Finegan | 4db04d3 | 2017-02-23 14:37:27 -0800 | [diff] [blame] | 332 | add_intrinsics_source_to_target("-msse4.1" "test_libaom" |
| 333 | "AOM_UNIT_TEST_COMMON_INTRIN_SSE4_1") |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 334 | if(CONFIG_AV1_ENCODER) |
| 335 | if(AOM_UNIT_TEST_ENCODER_INTRIN_SSE4_1) |
Tom Finegan | a9c4e51 | 2017-05-12 10:27:58 -0700 | [diff] [blame] | 336 | add_intrinsics_source_to_target("-msse4.1" "test_libaom" |
| 337 | "AOM_UNIT_TEST_ENCODER_INTRIN_SSE4_1") |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 338 | endif() |
| 339 | endif() |
| 340 | endif() |
| 341 | if(HAVE_AVX2) |
Tom Finegan | 84f2d79 | 2017-06-15 23:06:44 -0700 | [diff] [blame] | 342 | add_intrinsics_source_to_target("-mavx2" "test_libaom" |
| 343 | "AOM_UNIT_TEST_COMMON_INTRIN_AVX2") |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 344 | endif() |
| 345 | if(HAVE_NEON) |
Tom Finegan | eb10b75 | 2017-03-17 09:45:52 -0700 | [diff] [blame] | 346 | add_intrinsics_source_to_target("${AOM_NEON_INTRIN_FLAG}" "test_libaom" |
| 347 | "AOM_UNIT_TEST_COMMON_INTRIN_NEON") |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 348 | endif() |
Tom Finegan | 4f7e104 | 2017-03-01 10:25:16 -0800 | [diff] [blame] | 349 | |
Tom Finegan | d9647f2 | 2018-06-19 13:27:57 -0700 | [diff] [blame] | 350 | if(ENABLE_TESTDATA) |
| 351 | make_test_data_lists("${AOM_UNIT_TEST_DATA_LIST_FILE}" test_files |
| 352 | test_file_checksums) |
| 353 | list(LENGTH test_files num_test_files) |
| 354 | list(LENGTH test_file_checksums num_test_file_checksums) |
Tom Finegan | e9d70c9 | 2017-05-10 11:31:05 -0700 | [diff] [blame] | 355 | |
Tom Finegan | d9647f2 | 2018-06-19 13:27:57 -0700 | [diff] [blame] | 356 | math(EXPR max_file_index "${num_test_files} - 1") |
| 357 | foreach(test_index RANGE ${max_file_index}) |
| 358 | list(GET test_files ${test_index} test_file) |
| 359 | list(GET test_file_checksums ${test_index} test_file_checksum) |
| 360 | add_custom_target(testdata_${test_index} |
| 361 | COMMAND |
| 362 | ${CMAKE_COMMAND} -DAOM_CONFIG_DIR="${AOM_CONFIG_DIR}" |
| 363 | -DAOM_ROOT="${AOM_ROOT}" |
| 364 | -DAOM_TEST_FILE="${test_file}" |
| 365 | -DAOM_TEST_CHECKSUM=${test_file_checksum} -P |
| 366 | "${AOM_ROOT}/test/test_data_download_worker.cmake") |
| 367 | list(APPEND testdata_targets testdata_${test_index}) |
| 368 | endforeach() |
Tom Finegan | e9d70c9 | 2017-05-10 11:31:05 -0700 | [diff] [blame] | 369 | |
Tom Finegan | d9647f2 | 2018-06-19 13:27:57 -0700 | [diff] [blame] | 370 | # Create a custom build target for running each test data download target. |
| 371 | add_custom_target(testdata) |
| 372 | add_dependencies(testdata ${testdata_targets}) |
Tom Finegan | e9d70c9 | 2017-05-10 11:31:05 -0700 | [diff] [blame] | 373 | |
Tom Finegan | d9647f2 | 2018-06-19 13:27:57 -0700 | [diff] [blame] | 374 | # Skip creation of test run targets when generating for Visual Studio and |
| 375 | # Xcode unless the user explicitly requests IDE test hosting. This is done |
| 376 | # to make build cycles in the IDE tolerable when the IDE command for build |
| 377 | # project is used to build AOM. Default behavior in IDEs is to build all |
| 378 | # targets, and the test run takes hours. |
| 379 | if(((NOT MSVC) AND (NOT XCODE)) OR ENABLE_IDE_TEST_HOSTING) |
| 380 | |
| 381 | # Pick a reasonable number of targets (this controls parallelization). |
| 382 | processorcount(num_test_targets) |
| 383 | if(num_test_targets EQUAL 0) # Just default to 10 targets when there's no |
| 384 | # processor count available. |
| 385 | set(num_test_targets 10) |
| 386 | endif() |
| 387 | |
| 388 | math(EXPR max_shard_index "${num_test_targets} - 1") |
| 389 | foreach(shard_index RANGE ${max_shard_index}) |
| 390 | set(test_name "test_${shard_index}") |
| 391 | add_custom_target(${test_name} |
| 392 | COMMAND ${CMAKE_COMMAND} |
| 393 | -DGTEST_SHARD_INDEX=${shard_index} |
| 394 | -DGTEST_TOTAL_SHARDS=${num_test_targets} |
| 395 | -DTEST_LIBAOM=$<TARGET_FILE:test_libaom> -P |
| 396 | "${AOM_ROOT}/test/test_runner.cmake" |
| 397 | DEPENDS testdata test_libaom) |
| 398 | list(APPEND test_targets ${test_name}) |
| 399 | endforeach() |
| 400 | add_custom_target(runtests) |
| 401 | add_dependencies(runtests ${test_targets}) |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 402 | endif() |
| 403 | endif() |
Tom Finegan | 8521003 | 2018-01-18 09:52:02 -0800 | [diff] [blame] | 404 | |
Sarah Parker | 7e806c3 | 2018-02-23 12:20:08 -0800 | [diff] [blame] | 405 | # Collect all variables containing libaom test source files. |
| 406 | get_cmake_property(all_cmake_vars VARIABLES) |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 407 | foreach(var ${all_cmake_vars}) |
| 408 | |
| 409 | # https://github.com/cheshirekow/cmake_format/issues/34 |
| 410 | # cmake-format: off |
Sarah Parker | e931717 | 2018-02-27 17:55:55 -0800 | [diff] [blame] | 411 | if (("${var}" MATCHES "_TEST_" AND NOT |
| 412 | "${var}" MATCHES |
| 413 | "_DATA_\|_CMAKE_\|INTRA_PRED\|_COMPILED\|_HOSTING\|_PERF_\|CODER_") |
Tom Finegan | d9647f2 | 2018-06-19 13:27:57 -0700 | [diff] [blame] | 414 | OR (CONFIG_AV1_ENCODER AND ENABLE_ENCODE_PERF_TESTS AND |
Sarah Parker | e931717 | 2018-02-27 17:55:55 -0800 | [diff] [blame] | 415 | "${var}" MATCHES "_ENCODE_PERF_TEST_") |
Tom Finegan | d9647f2 | 2018-06-19 13:27:57 -0700 | [diff] [blame] | 416 | OR (CONFIG_AV1_DECODER AND ENABLE_DECODE_PERF_TESTS AND |
Sarah Parker | e931717 | 2018-02-27 17:55:55 -0800 | [diff] [blame] | 417 | "${var}" MATCHES "_DECODE_PERF_TEST_") |
| 418 | OR (CONFIG_AV1_ENCODER AND "${var}" MATCHES "_TEST_ENCODER_") |
| 419 | OR (CONFIG_AV1_DECODER AND "${var}" MATCHES "_TEST_DECODER_")) |
Sarah Parker | 7e806c3 | 2018-02-23 12:20:08 -0800 | [diff] [blame] | 420 | list(APPEND aom_test_source_vars ${var}) |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 421 | endif() |
Johann | 369ab20 | 2018-07-17 15:47:11 -0700 | [diff] [blame] | 422 | # cmake-format: on |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 423 | endforeach() |
Sarah Parker | 7e806c3 | 2018-02-23 12:20:08 -0800 | [diff] [blame] | 424 | |
| 425 | # Libaom_test_srcs.txt generation. |
| 426 | set(libaom_test_srcs_txt_file "${AOM_CONFIG_DIR}/libaom_test_srcs.txt") |
| 427 | file(WRITE "${libaom_test_srcs_txt_file}" |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 428 | "# This file is generated. DO NOT EDIT.\n") |
Sarah Parker | 7e806c3 | 2018-02-23 12:20:08 -0800 | [diff] [blame] | 429 | |
| 430 | # Static source file list first. |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 431 | foreach(aom_test_source_var ${aom_test_source_vars}) |
| 432 | foreach(file ${${aom_test_source_var}}) |
| 433 | if(NOT "${file}" MATCHES "${AOM_CONFIG_DIR}") |
Sarah Parker | 7e806c3 | 2018-02-23 12:20:08 -0800 | [diff] [blame] | 434 | string(REPLACE "${AOM_ROOT}/" "" file "${file}") |
| 435 | file(APPEND "${libaom_test_srcs_txt_file}" "${file}\n") |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 436 | endif() |
| 437 | endforeach() |
| 438 | endforeach() |
Tom Finegan | d9647f2 | 2018-06-19 13:27:57 -0700 | [diff] [blame] | 439 | |
| 440 | set(AOM_APP_TARGETS ${AOM_APP_TARGETS} PARENT_SCOPE) |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 441 | endfunction() |