blob: 2d9e77521123008547cb56f5132743471d5c25c0 [file] [log] [blame]
Johann589bae82018-04-27 10:57:44 -07001#
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#
11if(AOM_AOM_DSP_AOM_DSP_CMAKE_)
Johann29a59732018-04-27 10:51:00 -070012 return()
Johann589bae82018-04-27 10:57:44 -070013endif() # AOM_AOM_DSP_AOM_DSP_CMAKE_
Tom Finegan17ccaec2017-05-25 17:47:42 -070014set(AOM_AOM_DSP_AOM_DSP_CMAKE_ 1)
15
Tom Finegan744cdc02018-05-14 09:31:38 -070016list(APPEND AOM_DSP_COMMON_SOURCES
Johann23ebc872018-05-15 12:05:49 -070017 "${AOM_ROOT}/aom_dsp/aom_convolve.c"
18 "${AOM_ROOT}/aom_dsp/aom_convolve.h"
19 "${AOM_ROOT}/aom_dsp/aom_dsp_common.h"
20 "${AOM_ROOT}/aom_dsp/aom_filter.h"
21 "${AOM_ROOT}/aom_dsp/aom_simd.h"
22 "${AOM_ROOT}/aom_dsp/aom_simd_inline.h"
23 "${AOM_ROOT}/aom_dsp/blend.h"
24 "${AOM_ROOT}/aom_dsp/blend_a64_hmask.c"
25 "${AOM_ROOT}/aom_dsp/blend_a64_mask.c"
26 "${AOM_ROOT}/aom_dsp/blend_a64_vmask.c"
27 "${AOM_ROOT}/aom_dsp/entcode.c"
28 "${AOM_ROOT}/aom_dsp/entcode.h"
Neil Birkbeck04721792018-06-12 08:03:48 -070029 "${AOM_ROOT}/aom_dsp/fft.c"
30 "${AOM_ROOT}/aom_dsp/fft_common.h"
Johann23ebc872018-05-15 12:05:49 -070031 "${AOM_ROOT}/aom_dsp/intrapred.c"
32 "${AOM_ROOT}/aom_dsp/intrapred_common.h"
Johann23ebc872018-05-15 12:05:49 -070033 "${AOM_ROOT}/aom_dsp/loopfilter.c"
34 "${AOM_ROOT}/aom_dsp/prob.h"
35 "${AOM_ROOT}/aom_dsp/simd/v128_intrinsics.h"
36 "${AOM_ROOT}/aom_dsp/simd/v128_intrinsics_c.h"
37 "${AOM_ROOT}/aom_dsp/simd/v256_intrinsics.h"
38 "${AOM_ROOT}/aom_dsp/simd/v256_intrinsics_c.h"
39 "${AOM_ROOT}/aom_dsp/simd/v64_intrinsics.h"
40 "${AOM_ROOT}/aom_dsp/simd/v64_intrinsics_c.h"
41 "${AOM_ROOT}/aom_dsp/subtract.c"
42 "${AOM_ROOT}/aom_dsp/txfm_common.h"
43 "${AOM_ROOT}/aom_dsp/x86/convolve_common_intrin.h")
Tom Finegan85ac13e2017-02-22 15:09:20 -080044
Tom Finegan744cdc02018-05-14 09:31:38 -070045list(APPEND AOM_DSP_COMMON_ASM_SSE2
Johann23ebc872018-05-15 12:05:49 -070046 "${AOM_ROOT}/aom_dsp/x86/aom_convolve_copy_sse2.asm"
47 "${AOM_ROOT}/aom_dsp/x86/aom_high_subpixel_8t_sse2.asm"
48 "${AOM_ROOT}/aom_dsp/x86/aom_high_subpixel_bilinear_sse2.asm"
49 "${AOM_ROOT}/aom_dsp/x86/aom_subpixel_8t_sse2.asm"
50 "${AOM_ROOT}/aom_dsp/x86/aom_subpixel_bilinear_sse2.asm"
51 "${AOM_ROOT}/aom_dsp/x86/highbd_intrapred_sse2.asm"
52 "${AOM_ROOT}/aom_dsp/x86/intrapred_sse2.asm"
53 "${AOM_ROOT}/aom_dsp/x86/inv_wht_sse2.asm")
Tom Finegan85ac13e2017-02-22 15:09:20 -080054
Tom Finegan744cdc02018-05-14 09:31:38 -070055list(APPEND AOM_DSP_COMMON_INTRIN_SSE2
Johann23ebc872018-05-15 12:05:49 -070056 "${AOM_ROOT}/aom_dsp/x86/aom_asm_stubs.c"
57 "${AOM_ROOT}/aom_dsp/x86/convolve.h"
58 "${AOM_ROOT}/aom_dsp/x86/convolve_sse2.h"
Neil Birkbeck04721792018-06-12 08:03:48 -070059 "${AOM_ROOT}/aom_dsp/x86/fft_sse2.c"
Johann23ebc872018-05-15 12:05:49 -070060 "${AOM_ROOT}/aom_dsp/x86/highbd_intrapred_sse2.c"
61 "${AOM_ROOT}/aom_dsp/x86/highbd_loopfilter_sse2.c"
62 "${AOM_ROOT}/aom_dsp/x86/intrapred_sse2.c"
63 "${AOM_ROOT}/aom_dsp/x86/loopfilter_sse2.c"
64 "${AOM_ROOT}/aom_dsp/x86/lpf_common_sse2.h"
65 "${AOM_ROOT}/aom_dsp/x86/mem_sse2.h"
66 "${AOM_ROOT}/aom_dsp/x86/transpose_sse2.h"
67 "${AOM_ROOT}/aom_dsp/x86/txfm_common_sse2.h")
Tom Finegan85ac13e2017-02-22 15:09:20 -080068
Tom Finegan744cdc02018-05-14 09:31:38 -070069list(APPEND AOM_DSP_COMMON_ASM_SSSE3
Johann23ebc872018-05-15 12:05:49 -070070 "${AOM_ROOT}/aom_dsp/x86/aom_subpixel_8t_ssse3.asm"
71 "${AOM_ROOT}/aom_dsp/x86/aom_subpixel_bilinear_ssse3.asm")
Tom Finegan85ac13e2017-02-22 15:09:20 -080072
Tom Finegan744cdc02018-05-14 09:31:38 -070073list(APPEND AOM_DSP_COMMON_INTRIN_SSSE3
Johann23ebc872018-05-15 12:05:49 -070074 "${AOM_ROOT}/aom_dsp/x86/aom_subpixel_8t_intrin_ssse3.c"
75 "${AOM_ROOT}/aom_dsp/x86/highbd_convolve_ssse3.c"
76 "${AOM_ROOT}/aom_dsp/x86/intrapred_ssse3.c")
Tom Finegan2ca19f92017-11-09 10:44:46 -080077
Tom Finegan744cdc02018-05-14 09:31:38 -070078list(APPEND AOM_DSP_COMMON_INTRIN_SSE4_1
Xing Jin0a165c42018-07-18 17:53:37 +080079 "${AOM_ROOT}/aom_dsp/x86/blend_mask_sse4.h"
Johann23ebc872018-05-15 12:05:49 -070080 "${AOM_ROOT}/aom_dsp/x86/blend_a64_hmask_sse4.c"
81 "${AOM_ROOT}/aom_dsp/x86/blend_a64_mask_sse4.c"
82 "${AOM_ROOT}/aom_dsp/x86/blend_a64_vmask_sse4.c")
Tom Finegan85ac13e2017-02-22 15:09:20 -080083
Tom Finegan744cdc02018-05-14 09:31:38 -070084list(APPEND AOM_DSP_COMMON_INTRIN_AVX2
Johann23ebc872018-05-15 12:05:49 -070085 "${AOM_ROOT}/aom_dsp/x86/aom_subpixel_8t_intrin_avx2.c"
86 "${AOM_ROOT}/aom_dsp/x86/common_avx2.h"
Xing Jin354773c2018-06-27 11:18:46 +080087 "${AOM_ROOT}/aom_dsp/x86/txfm_common_avx2.h"
Johann23ebc872018-05-15 12:05:49 -070088 "${AOM_ROOT}/aom_dsp/x86/convolve_avx2.h"
Neil Birkbeck04721792018-06-12 08:03:48 -070089 "${AOM_ROOT}/aom_dsp/x86/fft_avx2.c"
Johann23ebc872018-05-15 12:05:49 -070090 "${AOM_ROOT}/aom_dsp/x86/highbd_convolve_avx2.c"
91 "${AOM_ROOT}/aom_dsp/x86/highbd_loopfilter_avx2.c"
Xing Jin0a165c42018-07-18 17:53:37 +080092 "${AOM_ROOT}/aom_dsp/x86/intrapred_avx2.c"
93 "${AOM_ROOT}/aom_dsp/x86/blend_a64_mask_avx2.c")
Tom Finegan85ac13e2017-02-22 15:09:20 -080094
David Michael Barre48cda92018-06-07 18:34:48 +090095list(APPEND AOM_DSP_COMMON_INTRIN_NEON
Johann23ebc872018-05-15 12:05:49 -070096 "${AOM_ROOT}/aom_dsp/arm/fwd_txfm_neon.c"
Cherma Rajan A271c6c42018-06-07 19:24:51 +053097 "${AOM_ROOT}/aom_dsp/arm/loopfilter_neon.c"
Johann23ebc872018-05-15 12:05:49 -070098 "${AOM_ROOT}/aom_dsp/arm/intrapred_neon.c"
Remya0ba3c472018-06-07 00:40:34 +053099 "${AOM_ROOT}/aom_dsp/arm/subtract_neon.c"
100 "${AOM_ROOT}/aom_dsp/arm/blend_a64_mask_neon.c")
Tom Finegan97d29ea2017-03-16 18:34:17 -0700101
Tom Finegan744cdc02018-05-14 09:31:38 -0700102list(APPEND AOM_DSP_COMMON_INTRIN_DSPR2
Johann23ebc872018-05-15 12:05:49 -0700103 "${AOM_ROOT}/aom_dsp/mips/common_dspr2.c"
104 "${AOM_ROOT}/aom_dsp/mips/common_dspr2.h"
105 "${AOM_ROOT}/aom_dsp/mips/convolve2_dspr2.c"
106 "${AOM_ROOT}/aom_dsp/mips/convolve2_horiz_dspr2.c"
107 "${AOM_ROOT}/aom_dsp/mips/convolve2_vert_dspr2.c"
108 "${AOM_ROOT}/aom_dsp/mips/convolve8_dspr2.c"
109 "${AOM_ROOT}/aom_dsp/mips/convolve8_horiz_dspr2.c"
110 "${AOM_ROOT}/aom_dsp/mips/convolve8_vert_dspr2.c"
111 "${AOM_ROOT}/aom_dsp/mips/convolve_common_dspr2.h"
112 "${AOM_ROOT}/aom_dsp/mips/intrapred16_dspr2.c"
113 "${AOM_ROOT}/aom_dsp/mips/intrapred4_dspr2.c"
114 "${AOM_ROOT}/aom_dsp/mips/intrapred8_dspr2.c"
115 "${AOM_ROOT}/aom_dsp/mips/inv_txfm_dspr2.h")
Yi Luoea8a0d52017-08-30 16:26:40 -0700116
Tom Finegan744cdc02018-05-14 09:31:38 -0700117list(APPEND AOM_DSP_COMMON_INTRIN_MSA
Johann23ebc872018-05-15 12:05:49 -0700118 "${AOM_ROOT}/aom_dsp/mips/aom_convolve8_horiz_msa.c"
119 "${AOM_ROOT}/aom_dsp/mips/aom_convolve8_vert_msa.c"
120 "${AOM_ROOT}/aom_dsp/mips/aom_convolve_copy_msa.c"
121 "${AOM_ROOT}/aom_dsp/mips/aom_convolve_msa.h"
122 "${AOM_ROOT}/aom_dsp/mips/intrapred_msa.c"
123 "${AOM_ROOT}/aom_dsp/mips/macros_msa.h")
Tom Finegan85ac13e2017-02-22 15:09:20 -0800124
Johann589bae82018-04-27 10:57:44 -0700125if(CONFIG_AV1_DECODER)
Tom Finegan744cdc02018-05-14 09:31:38 -0700126 list(APPEND AOM_DSP_DECODER_SOURCES
Johann23ebc872018-05-15 12:05:49 -0700127 "${AOM_ROOT}/aom_dsp/binary_codes_reader.c"
128 "${AOM_ROOT}/aom_dsp/binary_codes_reader.h"
129 "${AOM_ROOT}/aom_dsp/bitreader.h"
130 "${AOM_ROOT}/aom_dsp/bitreader_buffer.c"
131 "${AOM_ROOT}/aom_dsp/bitreader_buffer.h"
132 "${AOM_ROOT}/aom_dsp/daalaboolreader.c"
133 "${AOM_ROOT}/aom_dsp/daalaboolreader.h"
134 "${AOM_ROOT}/aom_dsp/entdec.c"
135 "${AOM_ROOT}/aom_dsp/entdec.h"
136 "${AOM_ROOT}/aom_dsp/grain_synthesis.c"
137 "${AOM_ROOT}/aom_dsp/grain_synthesis.h")
Johann589bae82018-04-27 10:57:44 -0700138endif()
Tom Finegan85ac13e2017-02-22 15:09:20 -0800139
Johann589bae82018-04-27 10:57:44 -0700140if(CONFIG_AV1_ENCODER)
Tom Finegan744cdc02018-05-14 09:31:38 -0700141 list(APPEND AOM_DSP_ENCODER_SOURCES
Johann23ebc872018-05-15 12:05:49 -0700142 "${AOM_ROOT}/aom_dsp/binary_codes_writer.c"
143 "${AOM_ROOT}/aom_dsp/binary_codes_writer.h"
144 "${AOM_ROOT}/aom_dsp/bitwriter.h"
145 "${AOM_ROOT}/aom_dsp/bitwriter_buffer.c"
146 "${AOM_ROOT}/aom_dsp/bitwriter_buffer.h"
147 "${AOM_ROOT}/aom_dsp/daalaboolwriter.c"
148 "${AOM_ROOT}/aom_dsp/daalaboolwriter.h"
149 "${AOM_ROOT}/aom_dsp/entenc.c"
150 "${AOM_ROOT}/aom_dsp/entenc.h"
151 "${AOM_ROOT}/aom_dsp/fwd_txfm.c"
152 "${AOM_ROOT}/aom_dsp/grain_table.c"
153 "${AOM_ROOT}/aom_dsp/grain_table.h"
154 "${AOM_ROOT}/aom_dsp/noise_model.c"
155 "${AOM_ROOT}/aom_dsp/noise_model.h"
156 "${AOM_ROOT}/aom_dsp/noise_util.c"
157 "${AOM_ROOT}/aom_dsp/noise_util.h"
158 "${AOM_ROOT}/aom_dsp/psnr.c"
159 "${AOM_ROOT}/aom_dsp/psnr.h"
160 "${AOM_ROOT}/aom_dsp/quantize.c"
161 "${AOM_ROOT}/aom_dsp/quantize.h"
162 "${AOM_ROOT}/aom_dsp/sad.c"
163 "${AOM_ROOT}/aom_dsp/sad_av1.c"
164 "${AOM_ROOT}/aom_dsp/sum_squares.c"
165 "${AOM_ROOT}/aom_dsp/variance.c"
166 "${AOM_ROOT}/aom_dsp/variance.h")
Tom Finegan85ac13e2017-02-22 15:09:20 -0800167
Tom Finegan744cdc02018-05-14 09:31:38 -0700168 list(APPEND AOM_DSP_ENCODER_ASM_SSE2
Johann23ebc872018-05-15 12:05:49 -0700169 "${AOM_ROOT}/aom_dsp/x86/halfpix_variance_impl_sse2.asm"
170 "${AOM_ROOT}/aom_dsp/x86/highbd_sad4d_sse2.asm"
171 "${AOM_ROOT}/aom_dsp/x86/highbd_sad_sse2.asm"
172 "${AOM_ROOT}/aom_dsp/x86/highbd_subpel_variance_impl_sse2.asm"
173 "${AOM_ROOT}/aom_dsp/x86/highbd_variance_impl_sse2.asm"
174 "${AOM_ROOT}/aom_dsp/x86/sad4d_sse2.asm"
175 "${AOM_ROOT}/aom_dsp/x86/sad_sse2.asm"
176 "${AOM_ROOT}/aom_dsp/x86/subpel_variance_sse2.asm"
177 "${AOM_ROOT}/aom_dsp/x86/subtract_sse2.asm")
Tom Finegan85ac13e2017-02-22 15:09:20 -0800178
Tom Finegan744cdc02018-05-14 09:31:38 -0700179 list(APPEND AOM_DSP_ENCODER_INTRIN_SSE2
Johann23ebc872018-05-15 12:05:49 -0700180 "${AOM_ROOT}/aom_dsp/x86/fwd_txfm_impl_sse2.h"
181 "${AOM_ROOT}/aom_dsp/x86/fwd_txfm_sse2.c"
182 "${AOM_ROOT}/aom_dsp/x86/fwd_txfm_sse2.h"
183 "${AOM_ROOT}/aom_dsp/x86/halfpix_variance_sse2.c"
184 "${AOM_ROOT}/aom_dsp/x86/highbd_quantize_intrin_sse2.c"
185 "${AOM_ROOT}/aom_dsp/x86/highbd_subtract_sse2.c"
186 "${AOM_ROOT}/aom_dsp/x86/highbd_variance_sse2.c"
187 "${AOM_ROOT}/aom_dsp/x86/quantize_sse2.c"
188 "${AOM_ROOT}/aom_dsp/x86/sum_squares_sse2.c"
189 "${AOM_ROOT}/aom_dsp/x86/variance_sse2.c")
Tom Finegan85ac13e2017-02-22 15:09:20 -0800190
Tom Finegan744cdc02018-05-14 09:31:38 -0700191 list(APPEND AOM_DSP_ENCODER_ASM_SSSE3_X86_64
Johann23ebc872018-05-15 12:05:49 -0700192 "${AOM_ROOT}/aom_dsp/x86/fwd_txfm_ssse3_x86_64.asm"
193 "${AOM_ROOT}/aom_dsp/x86/ssim_opt_x86_64.asm")
Tom Finegan85ac13e2017-02-22 15:09:20 -0800194
Tom Finegan744cdc02018-05-14 09:31:38 -0700195 list(APPEND AOM_DSP_ENCODER_INTRIN_AVX2
Xing Jin45811bc2018-07-10 17:38:16 +0800196 "${AOM_ROOT}/aom_dsp/x86/masked_sad_intrin_avx2.c"
Xing Jin980af3a2018-07-11 13:49:13 +0800197 "${AOM_ROOT}/aom_dsp/x86/subtract_avx2.c"
Johann23ebc872018-05-15 12:05:49 -0700198 "${AOM_ROOT}/aom_dsp/x86/highbd_quantize_intrin_avx2.c"
199 "${AOM_ROOT}/aom_dsp/x86/sad4d_avx2.c"
200 "${AOM_ROOT}/aom_dsp/x86/sad_avx2.c"
201 "${AOM_ROOT}/aom_dsp/x86/sad_highbd_avx2.c"
202 "${AOM_ROOT}/aom_dsp/x86/sad_impl_avx2.c"
203 "${AOM_ROOT}/aom_dsp/x86/variance_avx2.c"
Xing Jin6eecfe92018-07-09 14:54:38 +0800204 "${AOM_ROOT}/aom_dsp/x86/variance_impl_avx2.c"
205 "${AOM_ROOT}/aom_dsp/x86/obmc_sad_avx2.c")
Tom Finegan85ac13e2017-02-22 15:09:20 -0800206
Tom Finegan744cdc02018-05-14 09:31:38 -0700207 list(APPEND AOM_DSP_ENCODER_ASM_SSSE3_X86_64
Johann23ebc872018-05-15 12:05:49 -0700208 "${AOM_ROOT}/aom_dsp/x86/quantize_ssse3_x86_64.asm")
Tom Finegan85ac13e2017-02-22 15:09:20 -0800209
Tom Finegan744cdc02018-05-14 09:31:38 -0700210 list(APPEND AOM_DSP_ENCODER_AVX_ASM_X86_64
Johann23ebc872018-05-15 12:05:49 -0700211 "${AOM_ROOT}/aom_dsp/x86/quantize_avx_x86_64.asm")
Tom Finegan85ac13e2017-02-22 15:09:20 -0800212
Tom Finegan744cdc02018-05-14 09:31:38 -0700213 list(APPEND AOM_DSP_ENCODER_INTRIN_SSSE3
Xing Jin45811bc2018-07-10 17:38:16 +0800214 "${AOM_ROOT}/aom_dsp/x86/masked_sad_intrin_ssse3.h"
Johann23ebc872018-05-15 12:05:49 -0700215 "${AOM_ROOT}/aom_dsp/x86/masked_sad_intrin_ssse3.c"
216 "${AOM_ROOT}/aom_dsp/x86/masked_variance_intrin_ssse3.h"
217 "${AOM_ROOT}/aom_dsp/x86/masked_variance_intrin_ssse3.c"
Kyle Siefring6042d902018-06-12 00:33:17 -0400218 "${AOM_ROOT}/aom_dsp/x86/variance_impl_ssse3.c"
Johann23ebc872018-05-15 12:05:49 -0700219 "${AOM_ROOT}/aom_dsp/x86/jnt_variance_ssse3.c"
220 "${AOM_ROOT}/aom_dsp/x86/jnt_sad_ssse3.c")
Tom Finegan85ac13e2017-02-22 15:09:20 -0800221
Tom Finegan744cdc02018-05-14 09:31:38 -0700222 list(APPEND AOM_DSP_ENCODER_INTRIN_SSE4_1
Johann23ebc872018-05-15 12:05:49 -0700223 "${AOM_ROOT}/aom_dsp/x86/highbd_variance_sse4.c"
224 "${AOM_ROOT}/aom_dsp/x86/obmc_sad_sse4.c"
225 "${AOM_ROOT}/aom_dsp/x86/obmc_variance_sse4.c")
Tom Finegan85ac13e2017-02-22 15:09:20 -0800226
Tom Finegan744cdc02018-05-14 09:31:38 -0700227 list(APPEND AOM_DSP_ENCODER_INTRIN_NEON
Johann23ebc872018-05-15 12:05:49 -0700228 "${AOM_ROOT}/aom_dsp/arm/sad4d_neon.c"
229 "${AOM_ROOT}/aom_dsp/arm/sad_neon.c"
230 "${AOM_ROOT}/aom_dsp/arm/subpel_variance_neon.c"
231 "${AOM_ROOT}/aom_dsp/arm/variance_neon.c")
Tom Finegand148c962017-04-04 14:48:26 -0700232
Tom Finegan744cdc02018-05-14 09:31:38 -0700233 list(APPEND AOM_DSP_ENCODER_INTRIN_MSA "${AOM_ROOT}/aom_dsp/mips/sad_msa.c"
Johann23ebc872018-05-15 12:05:49 -0700234 "${AOM_ROOT}/aom_dsp/mips/subtract_msa.c"
235 "${AOM_ROOT}/aom_dsp/mips/variance_msa.c"
236 "${AOM_ROOT}/aom_dsp/mips/sub_pixel_variance_msa.c")
Tom Finegan85ac13e2017-02-22 15:09:20 -0800237
Johann589bae82018-04-27 10:57:44 -0700238 if(CONFIG_INTERNAL_STATS)
Johann23ebc872018-05-15 12:05:49 -0700239 list(APPEND AOM_DSP_ENCODER_SOURCES "${AOM_ROOT}/aom_dsp/fastssim.c"
240 "${AOM_ROOT}/aom_dsp/psnrhvs.c" "${AOM_ROOT}/aom_dsp/ssim.c"
241 "${AOM_ROOT}/aom_dsp/ssim.h")
Johann589bae82018-04-27 10:57:44 -0700242 endif()
243endif()
Tom Finegan85ac13e2017-02-22 15:09:20 -0800244
Tom Finegan85ac13e2017-02-22 15:09:20 -0800245# Creates aom_dsp build targets. Must not be called until after libaom target
246# has been created.
Johann589bae82018-04-27 10:57:44 -0700247function(setup_aom_dsp_targets)
Tom Finegan85ac13e2017-02-22 15:09:20 -0800248 add_library(aom_dsp_common OBJECT ${AOM_DSP_COMMON_SOURCES})
Tom Finegan84f2d792017-06-15 23:06:44 -0700249 list(APPEND AOM_LIB_TARGETS aom_dsp_common)
Tom Finegan78516fc2017-06-20 10:46:26 -0700250 create_dummy_source_file("aom_av1" "c" "dummy_source_file")
251 add_library(aom_dsp OBJECT "${dummy_source_file}")
252 target_sources(aom PRIVATE $<TARGET_OBJECTS:aom_dsp_common>)
Tom Finegan84f2d792017-06-15 23:06:44 -0700253 list(APPEND AOM_LIB_TARGETS aom_dsp)
254
255 # Not all generators support libraries consisting only of object files. Add a
256 # dummy source file to the aom_dsp target.
257 add_dummy_source_file_to_target("aom_dsp" "c")
Tom Finegan85ac13e2017-02-22 15:09:20 -0800258
Johann589bae82018-04-27 10:57:44 -0700259 if(CONFIG_AV1_DECODER)
Tom Finegan85ac13e2017-02-22 15:09:20 -0800260 add_library(aom_dsp_decoder OBJECT ${AOM_DSP_DECODER_SOURCES})
Tom Finegan744cdc02018-05-14 09:31:38 -0700261 list(APPEND AOM_LIB_TARGETS aom_dsp_decoder)
Tom Finegan78516fc2017-06-20 10:46:26 -0700262 target_sources(aom PRIVATE $<TARGET_OBJECTS:aom_dsp_decoder>)
Johann589bae82018-04-27 10:57:44 -0700263 endif()
Tom Finegan85ac13e2017-02-22 15:09:20 -0800264
Johann589bae82018-04-27 10:57:44 -0700265 if(CONFIG_AV1_ENCODER)
Tom Finegan85ac13e2017-02-22 15:09:20 -0800266 add_library(aom_dsp_encoder OBJECT ${AOM_DSP_ENCODER_SOURCES})
Tom Finegan744cdc02018-05-14 09:31:38 -0700267 list(APPEND AOM_LIB_TARGETS aom_dsp_encoder)
Tom Finegan78516fc2017-06-20 10:46:26 -0700268 target_sources(aom PRIVATE $<TARGET_OBJECTS:aom_dsp_encoder>)
Johann589bae82018-04-27 10:57:44 -0700269 endif()
Tom Finegan85ac13e2017-02-22 15:09:20 -0800270
Johann589bae82018-04-27 10:57:44 -0700271 if(HAVE_SSE2)
Tom Finegan78516fc2017-06-20 10:46:26 -0700272 add_asm_library("aom_dsp_common_sse2" "AOM_DSP_COMMON_ASM_SSE2" "aom")
Tom Finegan85ac13e2017-02-22 15:09:20 -0800273 add_intrinsics_object_library("-msse2" "sse2" "aom_dsp_common"
Johann589bae82018-04-27 10:57:44 -0700274 "AOM_DSP_COMMON_INTRIN_SSE2" "aom")
Tom Finegan84f2d792017-06-15 23:06:44 -0700275
Johann589bae82018-04-27 10:57:44 -0700276 if(CONFIG_AV1_ENCODER)
277 add_asm_library("aom_dsp_encoder_sse2" "AOM_DSP_ENCODER_ASM_SSE2" "aom")
Tom Finegan85ac13e2017-02-22 15:09:20 -0800278 add_intrinsics_object_library("-msse2" "sse2" "aom_dsp_encoder"
Tom Finegan78516fc2017-06-20 10:46:26 -0700279 "AOM_DSP_ENCODER_INTRIN_SSE2" "aom")
Tom Finegan85ac13e2017-02-22 15:09:20 -0800280 endif()
Johann589bae82018-04-27 10:57:44 -0700281 endif()
Tom Finegan85ac13e2017-02-22 15:09:20 -0800282
Johann589bae82018-04-27 10:57:44 -0700283 if(HAVE_SSSE3)
Tom Finegan78516fc2017-06-20 10:46:26 -0700284 add_asm_library("aom_dsp_common_ssse3" "AOM_DSP_COMMON_ASM_SSSE3" "aom")
Tom Finegan85ac13e2017-02-22 15:09:20 -0800285 add_intrinsics_object_library("-mssse3" "ssse3" "aom_dsp_common"
Tom Finegan78516fc2017-06-20 10:46:26 -0700286 "AOM_DSP_COMMON_INTRIN_SSSE3" "aom")
Tom Finegan85ac13e2017-02-22 15:09:20 -0800287
Johann589bae82018-04-27 10:57:44 -0700288 if(CONFIG_AV1_ENCODER)
289 if("${AOM_TARGET_CPU}" STREQUAL "x86_64")
Tom Finegan85ac13e2017-02-22 15:09:20 -0800290 list(APPEND AOM_DSP_ENCODER_ASM_SSSE3
Johann589bae82018-04-27 10:57:44 -0700291 ${AOM_DSP_ENCODER_ASM_SSSE3_X86_64})
292 endif()
Tom Finegan78516fc2017-06-20 10:46:26 -0700293 add_asm_library("aom_dsp_encoder_ssse3" "AOM_DSP_ENCODER_ASM_SSSE3" "aom")
James Zernb363b232018-05-16 16:53:27 -0700294 add_intrinsics_object_library("-mssse3" "ssse3" "aom_dsp_encoder"
295 "AOM_DSP_ENCODER_INTRIN_SSSE3" "aom")
Johann589bae82018-04-27 10:57:44 -0700296 endif()
297 endif()
Tom Finegan85ac13e2017-02-22 15:09:20 -0800298
Johann589bae82018-04-27 10:57:44 -0700299 if(HAVE_SSE4_1)
Tom Finegan85ac13e2017-02-22 15:09:20 -0800300 add_intrinsics_object_library("-msse4.1" "sse4_1" "aom_dsp_common"
Tom Finegan78516fc2017-06-20 10:46:26 -0700301 "AOM_DSP_COMMON_INTRIN_SSE4_1" "aom")
Johann589bae82018-04-27 10:57:44 -0700302 if(CONFIG_AV1_ENCODER)
James Zernb363b232018-05-16 16:53:27 -0700303 add_intrinsics_object_library("-msse4.1" "sse4_1" "aom_dsp_encoder"
304 "AOM_DSP_ENCODER_INTRIN_SSE4_1" "aom")
Johann589bae82018-04-27 10:57:44 -0700305 endif()
306 endif()
Tom Finegan85ac13e2017-02-22 15:09:20 -0800307
Johann589bae82018-04-27 10:57:44 -0700308 if(HAVE_AVX AND "${AOM_TARGET_CPU}" STREQUAL "x86_64")
309 if(CONFIG_AV1_ENCODER)
Tom Fineganba02c242017-05-16 15:01:54 -0700310 add_asm_library("aom_dsp_encoder_avx" "AOM_DSP_ENCODER_AVX_ASM_X86_64"
Tom Finegan78516fc2017-06-20 10:46:26 -0700311 "aom")
Johann589bae82018-04-27 10:57:44 -0700312 endif()
313 endif()
Tom Finegan85ac13e2017-02-22 15:09:20 -0800314
Johann589bae82018-04-27 10:57:44 -0700315 if(HAVE_AVX2)
Tom Finegan85ac13e2017-02-22 15:09:20 -0800316 add_intrinsics_object_library("-mavx2" "avx2" "aom_dsp_common"
Tom Finegan78516fc2017-06-20 10:46:26 -0700317 "AOM_DSP_COMMON_INTRIN_AVX2" "aom")
Johann589bae82018-04-27 10:57:44 -0700318 if(CONFIG_AV1_ENCODER)
Tom Finegan85ac13e2017-02-22 15:09:20 -0800319 add_intrinsics_object_library("-mavx2" "avx2" "aom_dsp_encoder"
Tom Finegan78516fc2017-06-20 10:46:26 -0700320 "AOM_DSP_ENCODER_INTRIN_AVX2" "aom")
Johann589bae82018-04-27 10:57:44 -0700321 endif()
322 endif()
Tom Finegan85ac13e2017-02-22 15:09:20 -0800323
Johann589bae82018-04-27 10:57:44 -0700324 if(HAVE_NEON)
Tom Finegan97d29ea2017-03-16 18:34:17 -0700325 add_intrinsics_object_library("${AOM_NEON_INTRIN_FLAG}" "neon"
Tom Finegan84f2d792017-06-15 23:06:44 -0700326 "aom_dsp_common" "AOM_DSP_COMMON_INTRIN_NEON"
Tom Finegan78516fc2017-06-20 10:46:26 -0700327 "aom")
Johann589bae82018-04-27 10:57:44 -0700328 if(CONFIG_AV1_ENCODER)
David Barker87430ba2018-02-08 16:50:53 +0000329 add_intrinsics_object_library("${AOM_NEON_INTRIN_FLAG}" "neon"
Johann589bae82018-04-27 10:57:44 -0700330 "aom_dsp_encoder"
331 "AOM_DSP_ENCODER_INTRIN_NEON" "aom")
332 endif()
333 endif()
Tom Finegand148c962017-04-04 14:48:26 -0700334
Johann589bae82018-04-27 10:57:44 -0700335 if(HAVE_DSPR2)
Tom Finegand148c962017-04-04 14:48:26 -0700336 add_intrinsics_object_library("" "dspr2" "aom_dsp_common"
Tom Finegan78516fc2017-06-20 10:46:26 -0700337 "AOM_DSP_COMMON_INTRIN_DSPR2" "aom")
Johann589bae82018-04-27 10:57:44 -0700338 endif()
Tom Finegand148c962017-04-04 14:48:26 -0700339
Johann589bae82018-04-27 10:57:44 -0700340 if(HAVE_MSA)
Tom Finegand148c962017-04-04 14:48:26 -0700341 add_intrinsics_object_library("" "msa" "aom_dsp_common"
Tom Finegan78516fc2017-06-20 10:46:26 -0700342 "AOM_DSP_COMMON_INTRIN_MSA" "aom")
Johann589bae82018-04-27 10:57:44 -0700343 if(CONFIG_AV1_ENCODER)
Tom Finegand148c962017-04-04 14:48:26 -0700344 add_intrinsics_object_library("" "msa" "aom_dsp_encoder"
Tom Finegan78516fc2017-06-20 10:46:26 -0700345 "AOM_DSP_ENCODER_INTRIN_MSA" "aom")
Johann589bae82018-04-27 10:57:44 -0700346 endif()
347 endif()
Tom Finegand148c962017-04-04 14:48:26 -0700348
Tom Finegan85ac13e2017-02-22 15:09:20 -0800349 # Pass the new lib targets up to the parent scope instance of
350 # $AOM_LIB_TARGETS.
351 set(AOM_LIB_TARGETS ${AOM_LIB_TARGETS} PARENT_SCOPE)
Johann589bae82018-04-27 10:57:44 -0700352endfunction()