| # 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() |