blob: b97d09def172dbcf856000638d7e2acc4c51fcc3 [file] [log] [blame]
# Copyright 2019 The libgav1 Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
if(LIBGAV1_SRC_LIBGAV1_DECODER_CMAKE_)
return()
endif() # LIBGAV1_SRC_LIBGAV1_DECODER_CMAKE_
set(LIBGAV1_SRC_LIBGAV1_DECODER_CMAKE_ 1)
list(APPEND libgav1_decoder_sources
"${libgav1_source}/buffer_pool.cc"
"${libgav1_source}/buffer_pool.h"
"${libgav1_source}/decoder_impl.cc"
"${libgav1_source}/decoder_impl.h"
"${libgav1_source}/decoder_state.h"
"${libgav1_source}/tile_scratch_buffer.cc"
"${libgav1_source}/tile_scratch_buffer.h"
"${libgav1_source}/film_grain.cc"
"${libgav1_source}/film_grain.h"
"${libgav1_source}/frame_buffer.cc"
"${libgav1_source}/frame_buffer_utils.h"
"${libgav1_source}/frame_scratch_buffer.h"
"${libgav1_source}/inter_intra_masks.inc"
"${libgav1_source}/internal_frame_buffer_list.cc"
"${libgav1_source}/internal_frame_buffer_list.h"
"${libgav1_source}/loop_restoration_info.cc"
"${libgav1_source}/loop_restoration_info.h"
"${libgav1_source}/motion_vector.cc"
"${libgav1_source}/motion_vector.h"
"${libgav1_source}/obu_parser.cc"
"${libgav1_source}/obu_parser.h"
"${libgav1_source}/post_filter/cdef.cc"
"${libgav1_source}/post_filter/deblock.cc"
"${libgav1_source}/post_filter/deblock_thresholds.inc"
"${libgav1_source}/post_filter/loop_restoration.cc"
"${libgav1_source}/post_filter/post_filter.cc"
"${libgav1_source}/post_filter/super_res.cc"
"${libgav1_source}/post_filter.h"
"${libgav1_source}/prediction_mask.cc"
"${libgav1_source}/prediction_mask.h"
"${libgav1_source}/quantizer.cc"
"${libgav1_source}/quantizer.h"
"${libgav1_source}/quantizer_tables.inc"
"${libgav1_source}/reconstruction.cc"
"${libgav1_source}/reconstruction.h"
"${libgav1_source}/residual_buffer_pool.cc"
"${libgav1_source}/residual_buffer_pool.h"
"${libgav1_source}/scan_tables.inc"
"${libgav1_source}/symbol_decoder_context.cc"
"${libgav1_source}/symbol_decoder_context.h"
"${libgav1_source}/symbol_decoder_context_cdfs.inc"
"${libgav1_source}/threading_strategy.cc"
"${libgav1_source}/threading_strategy.h"
"${libgav1_source}/tile.h"
"${libgav1_source}/tile/bitstream/mode_info.cc"
"${libgav1_source}/tile/bitstream/palette.cc"
"${libgav1_source}/tile/bitstream/partition.cc"
"${libgav1_source}/tile/bitstream/transform_size.cc"
"${libgav1_source}/tile/prediction.cc"
"${libgav1_source}/tile/tile.cc"
"${libgav1_source}/warp_prediction.cc"
"${libgav1_source}/warp_prediction.h"
"${libgav1_source}/yuv_buffer.cc"
"${libgav1_source}/yuv_buffer.h")
list(APPEND libgav1_api_includes "${libgav1_source}/gav1/decoder.h"
"${libgav1_source}/gav1/decoder_buffer.h"
"${libgav1_source}/gav1/decoder_settings.h"
"${libgav1_source}/gav1/frame_buffer.h"
"${libgav1_source}/gav1/status_code.h"
"${libgav1_source}/gav1/symbol_visibility.h"
"${libgav1_source}/gav1/version.h")
list(APPEND libgav1_api_sources "${libgav1_source}/decoder.cc"
"${libgav1_source}/decoder_settings.cc"
"${libgav1_source}/status_code.cc"
"${libgav1_source}/version.cc"
${libgav1_api_includes})
macro(libgav1_add_decoder_targets)
if(BUILD_SHARED_LIBS)
if(MSVC OR WIN32)
# In order to produce a DLL and import library the Windows tools require
# that the exported symbols are part of the DLL target. The unfortunate
# side effect of this is that a single configuration cannot output both
# the static library and the DLL: This results in an either/or situation.
# Windows users of the libgav1 build can have a DLL and an import library,
# or they can have a static library; they cannot have both from a single
# configuration of the build.
list(APPEND libgav1_shared_lib_sources ${libgav1_api_sources})
list(APPEND libgav1_static_lib_sources ${libgav1_api_includes})
else()
list(APPEND libgav1_shared_lib_sources ${libgav1_api_includes})
list(APPEND libgav1_static_lib_sources ${libgav1_api_sources})
endif()
else()
list(APPEND libgav1_static_lib_sources ${libgav1_api_sources})
endif()
if(NOT ANDROID)
list(APPEND libgav1_absl_deps absl::base absl::synchronization)
endif()
libgav1_add_library(NAME libgav1_decoder TYPE OBJECT SOURCES
${libgav1_decoder_sources} DEFINES ${libgav1_defines}
INCLUDES ${libgav1_include_paths})
libgav1_add_library(NAME
libgav1_static
OUTPUT_NAME
libgav1
TYPE
STATIC
SOURCES
${libgav1_static_lib_sources}
DEFINES
${libgav1_defines}
INCLUDES
${libgav1_include_paths}
LIB_DEPS
${libgav1_absl_deps}
OBJLIB_DEPS
libgav1_dsp
libgav1_decoder
libgav1_utils
PUBLIC_INCLUDES
${libgav1_source})
if(BUILD_SHARED_LIBS)
libgav1_add_library(NAME
libgav1_shared
OUTPUT_NAME
libgav1
TYPE
SHARED
SOURCES
${libgav1_shared_lib_sources}
DEFINES
${libgav1_defines}
INCLUDES
${libgav1_include_paths}
LIB_DEPS
libgav1_static
PUBLIC_INCLUDES
${libgav1_source})
endif()
endmacro()