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