xref: /aosp_15_r20/external/libgav1/src/libgav1_decoder.cmake (revision 095378508e87ed692bf8dfeb34008b65b3735891)
1*09537850SAkhilesh Sanikop# Copyright 2019 The libgav1 Authors
2*09537850SAkhilesh Sanikop#
3*09537850SAkhilesh Sanikop# Licensed under the Apache License, Version 2.0 (the "License");
4*09537850SAkhilesh Sanikop# you may not use this file except in compliance with the License.
5*09537850SAkhilesh Sanikop# You may obtain a copy of the License at
6*09537850SAkhilesh Sanikop#
7*09537850SAkhilesh Sanikop#      http://www.apache.org/licenses/LICENSE-2.0
8*09537850SAkhilesh Sanikop#
9*09537850SAkhilesh Sanikop# Unless required by applicable law or agreed to in writing, software
10*09537850SAkhilesh Sanikop# distributed under the License is distributed on an "AS IS" BASIS,
11*09537850SAkhilesh Sanikop# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*09537850SAkhilesh Sanikop# See the License for the specific language governing permissions and
13*09537850SAkhilesh Sanikop# limitations under the License.
14*09537850SAkhilesh Sanikop
15*09537850SAkhilesh Sanikopif(LIBGAV1_SRC_LIBGAV1_DECODER_CMAKE_)
16*09537850SAkhilesh Sanikop  return()
17*09537850SAkhilesh Sanikopendif() # LIBGAV1_SRC_LIBGAV1_DECODER_CMAKE_
18*09537850SAkhilesh Sanikopset(LIBGAV1_SRC_LIBGAV1_DECODER_CMAKE_ 1)
19*09537850SAkhilesh Sanikop
20*09537850SAkhilesh Sanikoplist(APPEND libgav1_decoder_sources
21*09537850SAkhilesh Sanikop            "${libgav1_source}/buffer_pool.cc"
22*09537850SAkhilesh Sanikop            "${libgav1_source}/buffer_pool.h"
23*09537850SAkhilesh Sanikop            "${libgav1_source}/decoder_impl.cc"
24*09537850SAkhilesh Sanikop            "${libgav1_source}/decoder_impl.h"
25*09537850SAkhilesh Sanikop            "${libgav1_source}/decoder_state.h"
26*09537850SAkhilesh Sanikop            "${libgav1_source}/tile_scratch_buffer.cc"
27*09537850SAkhilesh Sanikop            "${libgav1_source}/tile_scratch_buffer.h"
28*09537850SAkhilesh Sanikop            "${libgav1_source}/film_grain.cc"
29*09537850SAkhilesh Sanikop            "${libgav1_source}/film_grain.h"
30*09537850SAkhilesh Sanikop            "${libgav1_source}/frame_buffer.cc"
31*09537850SAkhilesh Sanikop            "${libgav1_source}/frame_buffer_utils.h"
32*09537850SAkhilesh Sanikop            "${libgav1_source}/frame_scratch_buffer.h"
33*09537850SAkhilesh Sanikop            "${libgav1_source}/inter_intra_masks.inc"
34*09537850SAkhilesh Sanikop            "${libgav1_source}/internal_frame_buffer_list.cc"
35*09537850SAkhilesh Sanikop            "${libgav1_source}/internal_frame_buffer_list.h"
36*09537850SAkhilesh Sanikop            "${libgav1_source}/loop_restoration_info.cc"
37*09537850SAkhilesh Sanikop            "${libgav1_source}/loop_restoration_info.h"
38*09537850SAkhilesh Sanikop            "${libgav1_source}/motion_vector.cc"
39*09537850SAkhilesh Sanikop            "${libgav1_source}/motion_vector.h"
40*09537850SAkhilesh Sanikop            "${libgav1_source}/obu_parser.cc"
41*09537850SAkhilesh Sanikop            "${libgav1_source}/obu_parser.h"
42*09537850SAkhilesh Sanikop            "${libgav1_source}/post_filter/cdef.cc"
43*09537850SAkhilesh Sanikop            "${libgav1_source}/post_filter/deblock.cc"
44*09537850SAkhilesh Sanikop            "${libgav1_source}/post_filter/deblock_thresholds.inc"
45*09537850SAkhilesh Sanikop            "${libgav1_source}/post_filter/loop_restoration.cc"
46*09537850SAkhilesh Sanikop            "${libgav1_source}/post_filter/post_filter.cc"
47*09537850SAkhilesh Sanikop            "${libgav1_source}/post_filter/super_res.cc"
48*09537850SAkhilesh Sanikop            "${libgav1_source}/post_filter.h"
49*09537850SAkhilesh Sanikop            "${libgav1_source}/prediction_mask.cc"
50*09537850SAkhilesh Sanikop            "${libgav1_source}/prediction_mask.h"
51*09537850SAkhilesh Sanikop            "${libgav1_source}/quantizer.cc"
52*09537850SAkhilesh Sanikop            "${libgav1_source}/quantizer.h"
53*09537850SAkhilesh Sanikop            "${libgav1_source}/quantizer_tables.inc"
54*09537850SAkhilesh Sanikop            "${libgav1_source}/reconstruction.cc"
55*09537850SAkhilesh Sanikop            "${libgav1_source}/reconstruction.h"
56*09537850SAkhilesh Sanikop            "${libgav1_source}/residual_buffer_pool.cc"
57*09537850SAkhilesh Sanikop            "${libgav1_source}/residual_buffer_pool.h"
58*09537850SAkhilesh Sanikop            "${libgav1_source}/scan_tables.inc"
59*09537850SAkhilesh Sanikop            "${libgav1_source}/symbol_decoder_context.cc"
60*09537850SAkhilesh Sanikop            "${libgav1_source}/symbol_decoder_context.h"
61*09537850SAkhilesh Sanikop            "${libgav1_source}/symbol_decoder_context_cdfs.inc"
62*09537850SAkhilesh Sanikop            "${libgav1_source}/threading_strategy.cc"
63*09537850SAkhilesh Sanikop            "${libgav1_source}/threading_strategy.h"
64*09537850SAkhilesh Sanikop            "${libgav1_source}/tile.h"
65*09537850SAkhilesh Sanikop            "${libgav1_source}/tile/bitstream/mode_info.cc"
66*09537850SAkhilesh Sanikop            "${libgav1_source}/tile/bitstream/palette.cc"
67*09537850SAkhilesh Sanikop            "${libgav1_source}/tile/bitstream/partition.cc"
68*09537850SAkhilesh Sanikop            "${libgav1_source}/tile/bitstream/transform_size.cc"
69*09537850SAkhilesh Sanikop            "${libgav1_source}/tile/prediction.cc"
70*09537850SAkhilesh Sanikop            "${libgav1_source}/tile/tile.cc"
71*09537850SAkhilesh Sanikop            "${libgav1_source}/warp_prediction.cc"
72*09537850SAkhilesh Sanikop            "${libgav1_source}/warp_prediction.h"
73*09537850SAkhilesh Sanikop            "${libgav1_source}/yuv_buffer.cc"
74*09537850SAkhilesh Sanikop            "${libgav1_source}/yuv_buffer.h")
75*09537850SAkhilesh Sanikop
76*09537850SAkhilesh Sanikoplist(APPEND libgav1_api_includes "${libgav1_source}/gav1/decoder.h"
77*09537850SAkhilesh Sanikop            "${libgav1_source}/gav1/decoder_buffer.h"
78*09537850SAkhilesh Sanikop            "${libgav1_source}/gav1/decoder_settings.h"
79*09537850SAkhilesh Sanikop            "${libgav1_source}/gav1/frame_buffer.h"
80*09537850SAkhilesh Sanikop            "${libgav1_source}/gav1/status_code.h"
81*09537850SAkhilesh Sanikop            "${libgav1_source}/gav1/symbol_visibility.h"
82*09537850SAkhilesh Sanikop            "${libgav1_source}/gav1/version.h")
83*09537850SAkhilesh Sanikop
84*09537850SAkhilesh Sanikoplist(APPEND libgav1_api_sources "${libgav1_source}/decoder.cc"
85*09537850SAkhilesh Sanikop            "${libgav1_source}/decoder_settings.cc"
86*09537850SAkhilesh Sanikop            "${libgav1_source}/status_code.cc"
87*09537850SAkhilesh Sanikop            "${libgav1_source}/version.cc"
88*09537850SAkhilesh Sanikop            ${libgav1_api_includes})
89*09537850SAkhilesh Sanikop
90*09537850SAkhilesh Sanikopmacro(libgav1_add_decoder_targets)
91*09537850SAkhilesh Sanikop  if(BUILD_SHARED_LIBS)
92*09537850SAkhilesh Sanikop    if(MSVC OR WIN32)
93*09537850SAkhilesh Sanikop      # In order to produce a DLL and import library the Windows tools require
94*09537850SAkhilesh Sanikop      # that the exported symbols are part of the DLL target. The unfortunate
95*09537850SAkhilesh Sanikop      # side effect of this is that a single configuration cannot output both
96*09537850SAkhilesh Sanikop      # the static library and the DLL: This results in an either/or situation.
97*09537850SAkhilesh Sanikop      # Windows users of the libgav1 build can have a DLL and an import library,
98*09537850SAkhilesh Sanikop      # or they can have a static library; they cannot have both from a single
99*09537850SAkhilesh Sanikop      # configuration of the build.
100*09537850SAkhilesh Sanikop      list(APPEND libgav1_shared_lib_sources ${libgav1_api_sources})
101*09537850SAkhilesh Sanikop      list(APPEND libgav1_static_lib_sources ${libgav1_api_includes})
102*09537850SAkhilesh Sanikop    else()
103*09537850SAkhilesh Sanikop      list(APPEND libgav1_shared_lib_sources ${libgav1_api_includes})
104*09537850SAkhilesh Sanikop      list(APPEND libgav1_static_lib_sources ${libgav1_api_sources})
105*09537850SAkhilesh Sanikop    endif()
106*09537850SAkhilesh Sanikop  else()
107*09537850SAkhilesh Sanikop    list(APPEND libgav1_static_lib_sources ${libgav1_api_sources})
108*09537850SAkhilesh Sanikop  endif()
109*09537850SAkhilesh Sanikop
110*09537850SAkhilesh Sanikop  if(use_absl_threading)
111*09537850SAkhilesh Sanikop    list(APPEND libgav1_absl_deps absl::base absl::synchronization)
112*09537850SAkhilesh Sanikop  endif()
113*09537850SAkhilesh Sanikop
114*09537850SAkhilesh Sanikop  libgav1_add_library(NAME libgav1_decoder TYPE OBJECT SOURCES
115*09537850SAkhilesh Sanikop                      ${libgav1_decoder_sources} DEFINES ${libgav1_defines}
116*09537850SAkhilesh Sanikop                      INCLUDES ${libgav1_include_paths})
117*09537850SAkhilesh Sanikop
118*09537850SAkhilesh Sanikop  libgav1_add_library(NAME
119*09537850SAkhilesh Sanikop                      libgav1_static
120*09537850SAkhilesh Sanikop                      OUTPUT_NAME
121*09537850SAkhilesh Sanikop                      libgav1
122*09537850SAkhilesh Sanikop                      TYPE
123*09537850SAkhilesh Sanikop                      STATIC
124*09537850SAkhilesh Sanikop                      SOURCES
125*09537850SAkhilesh Sanikop                      ${libgav1_static_lib_sources}
126*09537850SAkhilesh Sanikop                      DEFINES
127*09537850SAkhilesh Sanikop                      ${libgav1_defines}
128*09537850SAkhilesh Sanikop                      INCLUDES
129*09537850SAkhilesh Sanikop                      ${libgav1_include_paths}
130*09537850SAkhilesh Sanikop                      LIB_DEPS
131*09537850SAkhilesh Sanikop                      ${libgav1_absl_deps}
132*09537850SAkhilesh Sanikop                      OBJLIB_DEPS
133*09537850SAkhilesh Sanikop                      libgav1_dsp
134*09537850SAkhilesh Sanikop                      libgav1_decoder
135*09537850SAkhilesh Sanikop                      libgav1_utils
136*09537850SAkhilesh Sanikop                      PUBLIC_INCLUDES
137*09537850SAkhilesh Sanikop                      ${libgav1_source})
138*09537850SAkhilesh Sanikop
139*09537850SAkhilesh Sanikop  if(BUILD_SHARED_LIBS)
140*09537850SAkhilesh Sanikop    libgav1_add_library(NAME
141*09537850SAkhilesh Sanikop                        libgav1_shared
142*09537850SAkhilesh Sanikop                        OUTPUT_NAME
143*09537850SAkhilesh Sanikop                        libgav1
144*09537850SAkhilesh Sanikop                        TYPE
145*09537850SAkhilesh Sanikop                        SHARED
146*09537850SAkhilesh Sanikop                        SOURCES
147*09537850SAkhilesh Sanikop                        ${libgav1_shared_lib_sources}
148*09537850SAkhilesh Sanikop                        DEFINES
149*09537850SAkhilesh Sanikop                        ${libgav1_defines}
150*09537850SAkhilesh Sanikop                        INCLUDES
151*09537850SAkhilesh Sanikop                        ${libgav1_include_paths}
152*09537850SAkhilesh Sanikop                        LIB_DEPS
153*09537850SAkhilesh Sanikop                        libgav1_static
154*09537850SAkhilesh Sanikop                        PUBLIC_INCLUDES
155*09537850SAkhilesh Sanikop                        ${libgav1_source})
156*09537850SAkhilesh Sanikop  endif()
157*09537850SAkhilesh Sanikopendmacro()
158