xref: /aosp_15_r20/external/libgav1/src/dsp/libgav1_dsp.cmake (revision 095378508e87ed692bf8dfeb34008b65b3735891)
1# Copyright 2019 The libgav1 Authors
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7#      http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
15if(LIBGAV1_SRC_DSP_LIBGAV1_DSP_CMAKE_)
16  return()
17endif() # LIBGAV1_SRC_DSP_LIBGAV1_DSP_CMAKE_
18set(LIBGAV1_SRC_DSP_LIBGAV1_DSP_CMAKE_ 1)
19
20include("${libgav1_root}/cmake/libgav1_targets.cmake")
21
22list(APPEND libgav1_dsp_sources
23            "${libgav1_source}/dsp/average_blend.cc"
24            "${libgav1_source}/dsp/average_blend.h"
25            "${libgav1_source}/dsp/cdef.cc"
26            "${libgav1_source}/dsp/cdef.h"
27            "${libgav1_source}/dsp/cdef.inc"
28            "${libgav1_source}/dsp/common.h"
29            "${libgav1_source}/dsp/constants.cc"
30            "${libgav1_source}/dsp/constants.h"
31            "${libgav1_source}/dsp/convolve.cc"
32            "${libgav1_source}/dsp/convolve.h"
33            "${libgav1_source}/dsp/convolve.inc"
34            "${libgav1_source}/dsp/distance_weighted_blend.cc"
35            "${libgav1_source}/dsp/distance_weighted_blend.h"
36            "${libgav1_source}/dsp/dsp.cc"
37            "${libgav1_source}/dsp/dsp.h"
38            "${libgav1_source}/dsp/film_grain.cc"
39            "${libgav1_source}/dsp/film_grain.h"
40            "${libgav1_source}/dsp/film_grain_common.h"
41            "${libgav1_source}/dsp/intra_edge.cc"
42            "${libgav1_source}/dsp/intra_edge.h"
43            "${libgav1_source}/dsp/intrapred_cfl.cc"
44            "${libgav1_source}/dsp/intrapred_cfl.h"
45            "${libgav1_source}/dsp/intrapred_directional.cc"
46            "${libgav1_source}/dsp/intrapred_directional.h"
47            "${libgav1_source}/dsp/intrapred_filter.cc"
48            "${libgav1_source}/dsp/intrapred_filter.h"
49            "${libgav1_source}/dsp/intrapred.cc"
50            "${libgav1_source}/dsp/intrapred.h"
51            "${libgav1_source}/dsp/intrapred_smooth.cc"
52            "${libgav1_source}/dsp/intrapred_smooth.h"
53            "${libgav1_source}/dsp/inverse_transform.cc"
54            "${libgav1_source}/dsp/inverse_transform.h"
55            "${libgav1_source}/dsp/inverse_transform.inc"
56            "${libgav1_source}/dsp/loop_filter.cc"
57            "${libgav1_source}/dsp/loop_filter.h"
58            "${libgav1_source}/dsp/loop_restoration.cc"
59            "${libgav1_source}/dsp/loop_restoration.h"
60            "${libgav1_source}/dsp/mask_blend.cc"
61            "${libgav1_source}/dsp/mask_blend.h"
62            "${libgav1_source}/dsp/motion_field_projection.cc"
63            "${libgav1_source}/dsp/motion_field_projection.h"
64            "${libgav1_source}/dsp/motion_vector_search.cc"
65            "${libgav1_source}/dsp/motion_vector_search.h"
66            "${libgav1_source}/dsp/obmc.cc"
67            "${libgav1_source}/dsp/obmc.h"
68            "${libgav1_source}/dsp/obmc.inc"
69            "${libgav1_source}/dsp/smooth_weights.inc"
70            "${libgav1_source}/dsp/super_res.cc"
71            "${libgav1_source}/dsp/super_res.h"
72            "${libgav1_source}/dsp/warp.cc"
73            "${libgav1_source}/dsp/warp.h"
74            "${libgav1_source}/dsp/weight_mask.cc"
75            "${libgav1_source}/dsp/weight_mask.h")
76
77list(APPEND libgav1_dsp_sources_avx2
78            ${libgav1_dsp_sources_avx2}
79            "${libgav1_source}/dsp/x86/cdef_avx2.cc"
80            "${libgav1_source}/dsp/x86/cdef_avx2.h"
81            "${libgav1_source}/dsp/x86/convolve_avx2.cc"
82            "${libgav1_source}/dsp/x86/convolve_avx2.h"
83            "${libgav1_source}/dsp/x86/loop_restoration_10bit_avx2.cc"
84            "${libgav1_source}/dsp/x86/loop_restoration_avx2.cc"
85            "${libgav1_source}/dsp/x86/loop_restoration_avx2.h")
86
87list(APPEND libgav1_dsp_sources_neon
88            ${libgav1_dsp_sources_neon}
89            "${libgav1_source}/dsp/arm/average_blend_neon.cc"
90            "${libgav1_source}/dsp/arm/average_blend_neon.h"
91            "${libgav1_source}/dsp/arm/cdef_neon.cc"
92            "${libgav1_source}/dsp/arm/cdef_neon.h"
93            "${libgav1_source}/dsp/arm/common_neon.h"
94            "${libgav1_source}/dsp/arm/convolve_10bit_neon.cc"
95            "${libgav1_source}/dsp/arm/convolve_neon.cc"
96            "${libgav1_source}/dsp/arm/convolve_neon.h"
97            "${libgav1_source}/dsp/arm/distance_weighted_blend_neon.cc"
98            "${libgav1_source}/dsp/arm/distance_weighted_blend_neon.h"
99            "${libgav1_source}/dsp/arm/film_grain_neon.cc"
100            "${libgav1_source}/dsp/arm/film_grain_neon.h"
101            "${libgav1_source}/dsp/arm/intra_edge_neon.cc"
102            "${libgav1_source}/dsp/arm/intra_edge_neon.h"
103            "${libgav1_source}/dsp/arm/intrapred_cfl_neon.cc"
104            "${libgav1_source}/dsp/arm/intrapred_cfl_neon.h"
105            "${libgav1_source}/dsp/arm/intrapred_directional_neon.h"
106            "${libgav1_source}/dsp/arm/intrapred_directional_neon.cc"
107            "${libgav1_source}/dsp/arm/intrapred_filter_neon.cc"
108            "${libgav1_source}/dsp/arm/intrapred_filter_neon.h"
109            "${libgav1_source}/dsp/arm/intrapred_neon.cc"
110            "${libgav1_source}/dsp/arm/intrapred_neon.h"
111            "${libgav1_source}/dsp/arm/intrapred_smooth_neon.cc"
112            "${libgav1_source}/dsp/arm/intrapred_smooth_neon.h"
113            "${libgav1_source}/dsp/arm/inverse_transform_10bit_neon.cc"
114            "${libgav1_source}/dsp/arm/inverse_transform_neon.cc"
115            "${libgav1_source}/dsp/arm/inverse_transform_neon.h"
116            "${libgav1_source}/dsp/arm/loop_filter_10bit_neon.cc"
117            "${libgav1_source}/dsp/arm/loop_filter_neon.cc"
118            "${libgav1_source}/dsp/arm/loop_filter_neon.h"
119            "${libgav1_source}/dsp/arm/loop_restoration_10bit_neon.cc"
120            "${libgav1_source}/dsp/arm/loop_restoration_neon.cc"
121            "${libgav1_source}/dsp/arm/loop_restoration_neon.h"
122            "${libgav1_source}/dsp/arm/mask_blend_neon.cc"
123            "${libgav1_source}/dsp/arm/mask_blend_neon.h"
124            "${libgav1_source}/dsp/arm/motion_field_projection_neon.cc"
125            "${libgav1_source}/dsp/arm/motion_field_projection_neon.h"
126            "${libgav1_source}/dsp/arm/motion_vector_search_neon.cc"
127            "${libgav1_source}/dsp/arm/motion_vector_search_neon.h"
128            "${libgav1_source}/dsp/arm/obmc_neon.cc"
129            "${libgav1_source}/dsp/arm/obmc_neon.h"
130            "${libgav1_source}/dsp/arm/super_res_neon.cc"
131            "${libgav1_source}/dsp/arm/super_res_neon.h"
132            "${libgav1_source}/dsp/arm/warp_neon.cc"
133            "${libgav1_source}/dsp/arm/warp_neon.h"
134            "${libgav1_source}/dsp/arm/weight_mask_neon.cc"
135            "${libgav1_source}/dsp/arm/weight_mask_neon.h")
136
137list(APPEND libgav1_dsp_sources_sse4
138            ${libgav1_dsp_sources_sse4}
139            "${libgav1_source}/dsp/x86/average_blend_sse4.cc"
140            "${libgav1_source}/dsp/x86/average_blend_sse4.h"
141            "${libgav1_source}/dsp/x86/common_sse4.h"
142            "${libgav1_source}/dsp/x86/cdef_sse4.cc"
143            "${libgav1_source}/dsp/x86/cdef_sse4.h"
144            "${libgav1_source}/dsp/x86/convolve_sse4.cc"
145            "${libgav1_source}/dsp/x86/convolve_sse4.h"
146            "${libgav1_source}/dsp/x86/convolve_sse4.inc"
147            "${libgav1_source}/dsp/x86/distance_weighted_blend_sse4.cc"
148            "${libgav1_source}/dsp/x86/distance_weighted_blend_sse4.h"
149            "${libgav1_source}/dsp/x86/film_grain_sse4.cc"
150            "${libgav1_source}/dsp/x86/film_grain_sse4.h"
151            "${libgav1_source}/dsp/x86/intra_edge_sse4.cc"
152            "${libgav1_source}/dsp/x86/intra_edge_sse4.h"
153            "${libgav1_source}/dsp/x86/intrapred_cfl_sse4.cc"
154            "${libgav1_source}/dsp/x86/intrapred_cfl_sse4.h"
155            "${libgav1_source}/dsp/x86/intrapred_directional_sse4.cc"
156            "${libgav1_source}/dsp/x86/intrapred_directional_sse4.h"
157            "${libgav1_source}/dsp/x86/intrapred_filter_sse4.cc"
158            "${libgav1_source}/dsp/x86/intrapred_filter_sse4.h"
159            "${libgav1_source}/dsp/x86/intrapred_sse4.cc"
160            "${libgav1_source}/dsp/x86/intrapred_sse4.h"
161            "${libgav1_source}/dsp/x86/intrapred_smooth_sse4.cc"
162            "${libgav1_source}/dsp/x86/intrapred_smooth_sse4.h"
163            "${libgav1_source}/dsp/x86/inverse_transform_sse4.cc"
164            "${libgav1_source}/dsp/x86/inverse_transform_sse4.h"
165            "${libgav1_source}/dsp/x86/loop_filter_sse4.cc"
166            "${libgav1_source}/dsp/x86/loop_filter_sse4.h"
167            "${libgav1_source}/dsp/x86/loop_restoration_10bit_sse4.cc"
168            "${libgav1_source}/dsp/x86/loop_restoration_sse4.cc"
169            "${libgav1_source}/dsp/x86/loop_restoration_sse4.h"
170            "${libgav1_source}/dsp/x86/mask_blend_sse4.cc"
171            "${libgav1_source}/dsp/x86/mask_blend_sse4.h"
172            "${libgav1_source}/dsp/x86/motion_field_projection_sse4.cc"
173            "${libgav1_source}/dsp/x86/motion_field_projection_sse4.h"
174            "${libgav1_source}/dsp/x86/motion_vector_search_sse4.cc"
175            "${libgav1_source}/dsp/x86/motion_vector_search_sse4.h"
176            "${libgav1_source}/dsp/x86/obmc_sse4.cc"
177            "${libgav1_source}/dsp/x86/obmc_sse4.h"
178            "${libgav1_source}/dsp/x86/super_res_sse4.cc"
179            "${libgav1_source}/dsp/x86/super_res_sse4.h"
180            "${libgav1_source}/dsp/x86/transpose_sse4.h"
181            "${libgav1_source}/dsp/x86/warp_sse4.cc"
182            "${libgav1_source}/dsp/x86/warp_sse4.h"
183            "${libgav1_source}/dsp/x86/weight_mask_sse4.cc"
184            "${libgav1_source}/dsp/x86/weight_mask_sse4.h")
185
186macro(libgav1_add_dsp_targets)
187  unset(dsp_sources)
188  list(APPEND dsp_sources ${libgav1_dsp_sources}
189              ${libgav1_dsp_sources_neon}
190              ${libgav1_dsp_sources_avx2}
191              ${libgav1_dsp_sources_sse4})
192
193  libgav1_add_library(NAME
194                      libgav1_dsp
195                      TYPE
196                      OBJECT
197                      SOURCES
198                      ${dsp_sources}
199                      DEFINES
200                      ${libgav1_defines}
201                      $<$<CONFIG:Debug>:LIBGAV1_ENABLE_ALL_DSP_FUNCTIONS>
202                      INCLUDES
203                      ${libgav1_include_paths})
204endmacro()
205